Compare commits

...

148 Commits

Author SHA1 Message Date
fanquake
29e129ab6b Merge bitcoin/bitcoin#23301: [0.20] Finalise v0.20.2
0e2c782163 release: bump RC to 0 (-final) (fanquake)

Pull request description:

  Bump to final. Release will be tagged shortly after.

ACKs for top commit:
  laanwj:
    ACK 0e2c782163

Tree-SHA512: 1864302cf3b2e444fe7172082ff80839fb2d519cf59fc0c76a5f87027aec5a2e3783a73b5916539cfb093905acb104cf2a9e2d79279d0c69a58c5660005cf1d4
2021-10-18 20:41:02 +08:00
fanquake
0e2c782163 release: bump RC to 0 (-final) 2021-10-18 19:16:09 +08:00
MarcoFalke
fd78b7a788 Merge bitcoin/bitcoin#22900: [0.20.2] rc3, (missing) release notes and backport
88178b1d30 build: bump version to 0.20.2rc3 (fanquake)
0712b04359 doc: update release notes for rc3 (fanquake)
5f97738722 doc: add historical release notes for 0.20.1 (fanquake)
6b643b9fe5 doc: add historical release notes for 0.20.0 (fanquake)
2b986b3f07 doc: mention bech32m/BIP350 in doc/descriptors.md (Pieter Wuille)

Pull request description:

  This adds missing 0.20.0 and 0.20.1 release notes to the 0.20 branch, as well as release notes for 0.20.2, and backports #22837. The version is bumped to rc3 for the purpose of having one last, short, rc, before potentially cutting what should be the final release on the 0.20.0 branch.

ACKs for top commit:
  MarcoFalke:
    cr ACK 88178b1d30

Tree-SHA512: 82de908f73e5721f32a73fb975e27e809cd5f32f86ba44fb306b1a9aff7f0565e0f6d00ea4d7f28317502c648248f545a7d2797c43fc2eb461dc13dfe68b66af
2021-09-06 12:15:01 +02:00
fanquake
88178b1d30 build: bump version to 0.20.2rc3 2021-09-06 14:20:16 +08:00
fanquake
0712b04359 doc: update release notes for rc3 2021-09-06 14:19:12 +08:00
fanquake
5f97738722 doc: add historical release notes for 0.20.1 2021-09-06 11:28:04 +08:00
fanquake
6b643b9fe5 doc: add historical release notes for 0.20.0 2021-09-06 11:13:40 +08:00
Pieter Wuille
2b986b3f07 doc: mention bech32m/BIP350 in doc/descriptors.md
Github-Pull: #22837
Rebased-From: d2a09c8355
2021-09-06 11:05:33 +08:00
MarcoFalke
466acb3fbc Merge bitcoin/bitcoin#22192: [0.20] gitian: Use custom MacOS code signing tool
890397c234 Use latest signapple commit (Andrew Chow)
a17041e155 gitian: Remove codesign_allocate and pagestuff from MacOS build (Andrew Chow)
9c7c0e6401 gitian: use signapple to create the MacOS code signature (Andrew Chow)
f8344856d6 gitian: use signapple to apply the MacOS code signature (Andrew Chow)
a2650f6495 gitian: install signapple in gitian-osx-signer.yml (Andrew Chow)

Pull request description:

  Backport of #20880 and #22190

ACKs for top commit:
  MarcoFalke:
    cherry-pick-only ACK 890397c234 💢

Tree-SHA512: 7467f664f1673152118c19f6cc31dabf05a34f37d7ea0e687ff5f740f9dfa5aab57a4b90d24c0cbb919830e6ab2dd131af147789576fcd9d3d444e7d61bd14ea
2021-06-19 09:53:56 +02:00
Andrew Chow
890397c234 Use latest signapple commit
Update gitian and guix to use the same latest signapple commit

Github-Pull: #22190
Rebased-From: 683d197970
2021-06-08 17:08:37 -04:00
Andrew Chow
a17041e155 gitian: Remove codesign_allocate and pagestuff from MacOS build
Github-Pull: #20880
Rebased-From: 2c403279e2
2021-06-08 17:07:15 -04:00
Andrew Chow
9c7c0e6401 gitian: use signapple to create the MacOS code signature
Github-Pull: #20880
Rebased-From: f55eed2514
2021-06-08 17:06:53 -04:00
Andrew Chow
f8344856d6 gitian: use signapple to apply the MacOS code signature
Github-Pull: #20880
Rebased-From: 95b06d2185
2021-06-08 17:06:50 -04:00
Andrew Chow
a2650f6495 gitian: install signapple in gitian-osx-signer.yml
Github-Pull: #20880
Rebased-From: 42bb1ea363
2021-06-08 17:06:22 -04:00
W. J. van der Laan
5d2ebdd2b7 build: Bump version to 0.20.2rc2
Tree-SHA512: 8119106cebeea4db54b9575a031fea4633eb5f68484a25fd3bc5e9b50f60987f1cc3561a57a8ade5fb13430f801650070df549664e8f4809ea5f5c3dd1597eea
2021-06-03 18:56:30 +02:00
W. J. van der Laan
8b5c83b4aa Merge bitcoin/bitcoin#22124: 0.20: Finalize translations after closing 0.20.x on Transifex
56baeba2f3 0.20: Update translations after closing 0.20.x on Transifex (Hennadii Stepanov)

Pull request description:

  See [Release schedule for 22.0](https://github.com/bitcoin/bitcoin/issues/20851).

ACKs for top commit:
  laanwj:
    ACK 56baeba2f3

Tree-SHA512: 31a303393e3c294a96e00af6ebae5644c84ac208d1339f6cc0bf9ccaaaa886d6fb623e470f983d582375285ae8dc49f3588bb30742f8c1e4c11f493c6d0a5e11
2021-06-02 15:47:19 +02:00
Hennadii Stepanov
56baeba2f3 0.20: Update translations after closing 0.20.x on Transifex
See Release schedule for 22.0:
https://github.com/bitcoin/bitcoin/issues/20851
2021-06-02 14:06:27 +03:00
Andrew Chow
55631547ea Update Windows code signing certificate
Github-Pull: bitcoin/bitcoin#22017
Rebased-From: 167fb1fc72
Tree-SHA512: 03012adf45c14325a687cb75dcdcfa41ff570c2a02c31cd82e15e4ef21f1b5a0388b8bae31d50bd761c7fb1e3721b623c34142f6a486b46be6c152c35e01aa3f
2021-05-27 21:58:57 +02:00
W. J. van der Laan
56311988bf Merge bitcoin/bitcoin#21470: BIP 350: Implement Bech32m and use it for v1+ segwit addresses (0.20 backport)
c0f85fd850 Backport invalid address tests (Pieter Wuille)
c6709867d3 naming nits (Fabian Jahr)
1a4e88e0e8 Use Bech32m encoding for v1+ segwit addresses (Pieter Wuille)
cf18ac9665 Add Bech32m test vectors (Pieter Wuille)
5f9537b2d9 Implement Bech32m encoding/decoding (Pieter Wuille)

Pull request description:

  Backport of #20861 for 0.20. Also includes #21471.

ACKs for top commit:
  jnewbery:
    utACK c0f85fd850
  MarcoFalke:
    range-diff-only ACK c0f85fd850 🐔

Tree-SHA512: e87e52995cb9b555109bc500dba1e844993d881821d2001443b3de9e3ef9050ddb73deefa0c1af732418fa7355a86b875789887c9611c340713b3ad26809d58e
2021-04-23 09:53:43 +02:00
Pieter Wuille
c0f85fd850 Backport invalid address tests
Reduced version of the test from master/#20861 by John Newbery.

Github-Pull: #20861
Rebased-From: fe5e495c31
2021-03-27 12:08:33 -07:00
Fabian Jahr
c6709867d3 naming nits
Github-Pull: #20861
Rebased-From: 03346022d6
2021-03-27 12:08:33 -07:00
Pieter Wuille
1a4e88e0e8 Use Bech32m encoding for v1+ segwit addresses
This also includes updates to the Python test framework implementation,
test vectors, and release notes.

Github-Pull: #20861
Rebased-From: fe5e495c31
2021-03-27 12:08:28 -07:00
Pieter Wuille
cf18ac9665 Add Bech32m test vectors
Github-Pull: #20861
Rebased-From: 25b1c6e13d
2021-03-18 14:07:29 -07:00
Pieter Wuille
5f9537b2d9 Implement Bech32m encoding/decoding
Github-Pull: #20861
Rebased-From: da2bb6976d
2021-03-18 14:02:48 -07:00
Wladimir J. van der Laan
f1c3c53e5f Merge #20738: [0.20] final rc2 backports
19bcf17848 [doc] Add permissions to the getpeerinfo help. (Amiti Uttarwar)
d0c75abb28 doc: Extract net permissions doc (MarcoFalke)
bcb655d7d1 rpc: Add missing description of vout in getrawtransaction help text (Ben Carman)

Pull request description:

ACKs for top commit:
  benthecarman:
    ACK 19bcf17
  fanquake:
    ACK 19bcf17848

Tree-SHA512: 5c0e500d44adba7707dddccee9a956957ff1771439a0aea9841f01571ac21028531b8e0276a4b7dee2588b1828853bd227a64de1590204472470cd43268a5368
2021-01-12 17:50:55 +01:00
Amiti Uttarwar
19bcf17848 [doc] Add permissions to the getpeerinfo help.
This field was already being returned, but the RPCHelpMan did not indicate
this. So, this PR updates the help text to match.

Github-Pull: #20756
Rebased-From: 667d203687
2021-01-05 09:27:23 +01:00
MarcoFalke
d0c75abb28 doc: Extract net permissions doc
Github-Pull: #19192
Rebased-From: fa2c2b50d8
2021-01-05 09:27:23 +01:00
Ben Carman
bcb655d7d1 rpc: Add missing description of vout in getrawtransaction help text
Github-Pull: #20731
Rebased-From: b23349b880
2021-01-05 09:27:23 +01:00
Wladimir J. van der Laan
a4bc4c1f79 doc: Update manual pages pre-rc1
Tree-SHA512: 88384fc1e1be9f2bcdbe725dae5306aa74427f63d0dc54d177b0008fde74bd3284a1073d446c04d54c491e970607b14fbd58592296575e99ba328c50b7cf55dc
2020-12-10 21:00:55 +01:00
Wladimir J. van der Laan
98c9d79d2b gui: Pre-rc1 translations update
Tree-SHA512: 3a262c501cdfe9bda7f33045c6d16fb4d3aa46c11ebfd6664302460413c2333ea39fb201fbd7b9edaddb76f92138a3e026ec2f0a9ba40eabff45ae451d5c6af3
2020-12-10 20:55:24 +01:00
Wladimir J. van der Laan
2808593b7c build: Bump version to 0.20.2rc1
Tree-SHA512: 05bd998383127dae969dbb811aa6170fe07a5f92af3b13dc6d7c135461aa93697e5e4a5a5fc98d4c0f848fdc0ed8317c3624e2a0a54c0ea18d25d5a585efc6ec
2020-12-10 20:26:35 +01:00
MarcoFalke
953dddbd20 Merge #19740: [0.20] wallet: Simplify and fix CWallet::SignTransaction
6a326cf66f tests: Test that a fully signed tx given to signrawtx is unchanged (Andrew Chow)
2d48d7dcfb Simplify and fix CWallet::SignTransaction (Andrew Chow)

Pull request description:

  Backport `CWallet::SignTransaction` from master which is simpler and not broken.

  Previously `CWallet::SignTransaction` would return false for a fully signed transaction. This is a regression and obviously incorrect - a fully signed transaction is always complete. This occurs because `CWallet::SignTransaction` would iterate through each input and skip any further checks if the input was already signed. It would then end up falling through to the `return false` catch-all thus erroneously saying a fully signed transaction is incomplete. The change to attempting to use all `ScriptPubKeyMan`s fixes this problem since the `LegacyScriptPubKeyMan` (the only spkm implemented in 0.20) will verify inputs during its signing attempt and correctly return that it is complete when the inputs verify. Thus a fully signed transaction will be correctly identified as complete, `LegacyScriptPubKeyMan::SignTranaction` will return true, and so `CWallet::Transaction` will return true too.

  Note that this is not a backport of any specific commit. Rather it is the end result of the changes we have made to this function in master.

  Fixes #19737

ACKs for top commit:
  fjahr:
    Code review ACK 6a326cf66f
  MarcoFalke:
    re-ACK 6a326cf66f 👓

Tree-SHA512: 7b8e04cfc264de01a2de08a99477c1a110fa0965dcbd4305bf4632a165f28b090746789195f5cb584eb6d85e27d4801a09d2dad28e508d7898c7c088e771812b
2020-12-10 20:06:35 +01:00
Andrew Chow
6a326cf66f tests: Test that a fully signed tx given to signrawtx is unchanged
Tests that a fully signed transaction given to
signrawtransactionwithwallet is both unchanged and marked as complete.
This tests for a regression in 0.20 where the transaction would not be
marked as complete.

Github-Pull: #20562
Rebased-From: 773c42b265
2020-12-05 13:50:30 -05:00
MarcoFalke
75bf23d861 Merge #20399: Revert "Merge #19606: Backport wtxid relay to v0.20"
fa074d2c7b Revert "Merge #19606: Backport wtxid relay to v0.20" (MarcoFalke)

Pull request description:

  The 0.20 branch has bugfixes that should be released. However, a tag can currently not be created because the latest merge introduced a regression and is not a bugfix (https://github.com/bitcoin/bitcoin/pull/20317#issuecomment-723754509, https://github.com/bitcoin/bitcoin/pull/20317#issuecomment-727624755).

  Fix that by reverting the last merge. Can be reviewed by re-doing the revert or calling `git diff HEAD HEAD~2 | wc` and observing an empty diff.

ACKs for top commit:
  laanwj:
    Code review ACK fa074d2c7b

Tree-SHA512: 1a1314b9bb85f44696dc307845e80292998d6c9c000e7386c48405e74400d9cd22be6996e555f198da917e04024a1c8e609dfd830759a27fe4070168b0d272bb
2020-11-23 15:53:06 +01:00
MarcoFalke
a2fa11f9de Merge #20166: [0.20] Backports
7566af419f doc: Update data directory path comments (Hennadii Stepanov)
09261de6ed util: Add StripRedundantLastElementsOfPath function (Hennadii Stepanov)
8ef0dace86 macOS deploy: use the new plistlib API (Jonas Schnelli)
314e79581f build: fix mutex detection when building bdb on macOS (fanquake)
1f67a30e83 random: fixes read buffer resizing in RandAddSeedPerfmon (Ethan Heilman)
6113b547f4 net: Send post-verack handshake messages at most once (MarcoFalke)
bdf15d0d5d rpc: Adjust witness-tx deserialize error message (MarcoFalke)
731502a183 rpc: Properly deserialize txs with witness before signing (MarcoFalke)
ee0082b886 Avoid the use of abs64 in timedata (Pieter Wuille)
05bd0c220a docs: Correct description for getblockstats's txs field (Nadav Ivgi)

Pull request description:

  Backports the following PRs to the 0.20 branch:
  * https://github.com/bitcoin/bitcoin/pull/19777 - docs: Correct description for getblockstats's txs field
  * https://github.com/bitcoin/bitcoin/pull/19836 - rpc: Properly deserialize txs with witness before signing
  * https://github.com/bitcoin/bitcoin/pull/20080 - Strip any trailing `/` in -datadir and -blocksdir paths
  * https://github.com/bitcoin/bitcoin/pull/20082 - [bugfix] random: fixes read buffer to use min rather than max
  * https://github.com/bitcoin/bitcoin/pull/20141 - Avoid the use of abs64 in timedata
  * https://github.com/bitcoin/bitcoin/pull/20146 - net: Send post-verack handshake messages at most once
  * https://github.com/bitcoin/bitcoin/pull/20195 - build: fix mutex detection when building bdb on macOS
  * https://github.com/bitcoin/bitcoin/pull/20298 - macOS deploy: use the new plistlib API

  Will add additional commits as they become available.

ACKs for top commit:
  MarcoFalke:
    review ACK 7566af419f 🗡

Tree-SHA512: add6bb978313c12c3e07bc232636ae9d1ab0edd0b816705c5c70eeb1cc04097165fd5e29d60c706886943ceb1f749a422020766b4aa2d23be51e9f839157a4bb
2020-11-18 10:03:04 +01:00
MarcoFalke
fa074d2c7b Revert "Merge #19606: Backport wtxid relay to v0.20"
This reverts commit a339289c2e, reversing
changes made to b9ac31f2d2.
2020-11-16 07:50:27 +01:00
Hennadii Stepanov
7566af419f doc: Update data directory path comments
Github-Pull: #20080
Rebased-From: ad5cef5dfd
2020-11-06 15:47:47 +08:00
Hennadii Stepanov
09261de6ed util: Add StripRedundantLastElementsOfPath function
Co-authored-by: saibato <saibato.naga@pm.me>
Co-authored-by: MarcoFalke <falke.marco@gmail.com>

Github-Pull: 20080
Rebased-From: b19e88230f
2020-11-06 15:45:09 +08:00
Jonas Schnelli
8ef0dace86 macOS deploy: use the new plistlib API
See https://docs.python.org/3/library/plistlib.html.
The new API was added in 3.4 and old removed in 3.9.

Github-Pull: 20298
Rebased-From: 04a69c200e
2020-11-06 15:39:50 +08:00
Wladimir J. van der Laan
a339289c2e Merge #19606: Backport wtxid relay to v0.20
d4a1ee8f1d Further improve comments around recentRejects (Suhas Daftuar)
f082a13ab7 Disconnect peers sending wtxidrelay message after VERACK (Suhas Daftuar)
22effa51a7 test: Use wtxid relay generally in functional tests (Fabian Jahr)
e481681963 test: Add tests for wtxid tx relay in segwit test (Fabian Jahr)
6be398b6fb test: Update test framework p2p protocol version to 70016 (Fabian Jahr)
e364b2a2d8 Rename AddInventoryKnown() to AddKnownTx() (Suhas Daftuar)
879a3cf2c2 Make TX_WITNESS_STRIPPED its own rejection reason (Suhas Daftuar)
c1d6a1003d Delay getdata requests from peers using txid-based relay (Suhas Daftuar)
181ffadd16 Add p2p message "wtxidrelay" (Suhas Daftuar)
93826726e7 ignore non-wtxidrelay compliant invs (Anthony Towns)
2599277e9c Add support for tx-relay via wtxid (Suhas Daftuar)
be1b7a8916 Add wtxids to recentRejects (Suhas Daftuar)
73845211d1 Add wtxids of confirmed transactions to bloom filter (Suhas Daftuar)
606755b840 Add wtxid-index to orphan map (Suhas Daftuar)
3654937674 Add a wtxid-index to mapRelay (Suhas Daftuar)
f7833b5bd8 Just pass a hash to AddInventoryKnown (Suhas Daftuar)
4df3d139b7 Add a wtxid-index to the mempool (Suhas Daftuar)

Pull request description:

  We want wtxid relay to be widely deployed before taproot activation, so it should be backported to v0.20.

  The main difference from #18044 is removing the changes to the unbroadcast set (which was only added post-v0.20). The rest is mostly minor rebase conflicts (eg connman changed from a pointer to a reference in master, etc).

  We'll also want to backport #19569 after that's merged.

ACKs for top commit:
  fjahr:
    re-ACK d4a1ee8f1d
  instagibbs:
    reACK d4a1ee8f1d
  laanwj:
    re-ACK d4a1ee8f1d
  hebasto:
    re-ACK d4a1ee8f1d, only rebased since my [previous](https://github.com/bitcoin/bitcoin/pull/19606#pullrequestreview-492763028) review:

Tree-SHA512: 1bb8725dd2313a9a03cacf8fb7317986eed3d8d1648fa627528441256c37c793bb0fae6c8c139d05ac45d0c7a86265792834e8e09cbf45286426ca6544c10cd5
2020-11-05 15:10:27 +01:00
fanquake
314e79581f build: fix mutex detection when building bdb on macOS
Starting with the Clang shipped with Xcode 12, Apple has enabled
-Werror=implicit-function-declaration by default. This causes bdbs mutex
detection to fail when building on macOS (not cross-compiling):

checking for mutexes... UNIX/fcntl
configure: WARNING: NO SHARED LATCH IMPLEMENTATION FOUND FOR THIS PLATFORM.
configure: error: Unable to find a mutex implementation

as previously emitted warnings are being turned into errors. i.e:

error: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Werror,-Wimplicit-function-declaration]

Append -Wno-error=implicit-function-declaration to cflags so that
-Wimplicit-function-declaration returns to being a warning, and the
configure checks will succeed.

Fixes #19411.

Github-Pull: #20195
Rebased-From: d0a829e963
2020-10-30 08:08:01 +08:00
Ethan Heilman
1f67a30e83 random: fixes read buffer resizing in RandAddSeedPerfmon
+ Replaces std::max with std::min to resize buffer in RandAddSeedPerfmon
+ Documents behavior of RandAddSeedPerfmon

Github-Pull: #20082
Rebased-From: bd5215103e
2020-10-23 08:50:19 +08:00
MarcoFalke
6113b547f4 net: Send post-verack handshake messages at most once
Github-Pull: #20146
Rebased-From: fa1f6f237d
2020-10-19 10:59:49 +08:00
MarcoFalke
bdf15d0d5d rpc: Adjust witness-tx deserialize error message
Github-Pull: #19836
Rebased-From: 3333077823
2020-10-16 12:09:17 +08:00
MarcoFalke
731502a183 rpc: Properly deserialize txs with witness before signing
Github-Pull: #19836
Rebased-From: cccc752569
2020-10-16 12:06:53 +08:00
Pieter Wuille
ee0082b886 Avoid the use of abs64 in timedata
Github-Pull: #20141
Rebased-From: d1292f25f2
2020-10-16 11:42:27 +08:00
Nadav Ivgi
05bd0c220a docs: Correct description for getblockstats's txs field
It does count the coinbase transaction.

Refs #19766

Github-Pull: #19777
Rebased-From: 4148f55dd0
2020-10-16 11:35:47 +08:00
MarcoFalke
b9ac31f2d2 Merge #20142: [0.20] build: set minimum required Boost to 1.48.0
3562c15be3 build: set minimum required Boost to 1.48.0 (fanquake)

Pull request description:

  Due to the use of [`boost::filesystem::canonical()`](80aa83aa40/src/wallet/load.cpp (L21)), the minimum required
  version of Boost is actually 1.48.0. Use of canonical was introduced
  in #14146.

  See also [Boost filesystem 1.48.0 release notes](6b5e38134a/doc/release_history.html (L508)). Also discussed in #20080.

ACKs for top commit:
  practicalswift:
    ACK 3562c15be3: correct is better than incorrect :)
  hebasto:
    ACK 3562c15be3, this is the status quo.

Tree-SHA512: 1d2226c60accb8e2276e023120a72f070392a6c1d3db97fb23e7759c174984226f81fed6d94f3203ef663fb4b3648e65960aaf15ed718895b6673e3ebeb082bd
2020-10-13 17:42:37 +02:00
fanquake
3562c15be3 build: set minimum required Boost to 1.48.0
Due to the use of boost::filesystem::canonical(), the minimum required
version of Boost is actually 1.48.0. Use of canonical was introduced
in #14146.

See also Boost filesystem 1.48.0 release notes:
6b5e38134a/doc/release_history.html (L508)
2020-10-13 12:22:02 +08:00
Suhas Daftuar
d4a1ee8f1d Further improve comments around recentRejects 2020-09-24 13:24:10 +01:00
Suhas Daftuar
f082a13ab7 Disconnect peers sending wtxidrelay message after VERACK 2020-09-24 13:24:10 +01:00
Fabian Jahr
22effa51a7 test: Use wtxid relay generally in functional tests 2020-09-24 13:24:10 +01:00
Fabian Jahr
e481681963 test: Add tests for wtxid tx relay in segwit test
Also cleans up some doublicate lines in the rest of the test.

co-authored-by: Anthony Towns <aj@erisian.com.au>
2020-09-24 13:24:10 +01:00
Fabian Jahr
6be398b6fb test: Update test framework p2p protocol version to 70016
This new p2p protocol version allows to use WTXIDs for tx relay.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
e364b2a2d8 Rename AddInventoryKnown() to AddKnownTx() 2020-09-24 13:24:10 +01:00
Suhas Daftuar
879a3cf2c2 Make TX_WITNESS_STRIPPED its own rejection reason
Previously, TX_WITNESS_MUTATED could be returned during transaction validation
for either transactions that had a witness that was non-standard, or for
transactions that had no witness but were invalid due to segwit validation
rules.

However, for txid/wtxid-relay considerations, net_processing distinguishes the
witness stripped case separately, because it affects whether a wtxid should be
able to be added to the reject filter. It is safe to add the wtxid of a
witness-mutated transaction to the filter (as that wtxid shouldn't collide with
the txid, and hence it wouldn't interfere with transaction relay from
txid-relay peers), but it is not safe to add the wtxid (== txid) of a
witness-stripped transaction to the filter, because that would interfere with
relay of another transaction with the same txid (but different wtxid) when
relaying from txid-relay peers.

Also updates the comment explaining this logic, and explaining that we can get
rid of this complexity once there's a sufficient deployment of wtxid-relaying
peers on the network.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
c1d6a1003d Delay getdata requests from peers using txid-based relay
Using both txid and wtxid-based relay with peers means that we could sometimes
download the same transaction twice, if announced via two different hashes from
different peers.

Use a heuristic of delaying txid-peer-getdata requests by 2 seconds, if we have
at least one wtxid-based peer.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
181ffadd16 Add p2p message "wtxidrelay"
When sent to and received from a given peer, enables using wtxid's for
announcing and fetching transactions with that peer.
2020-09-24 13:24:10 +01:00
Anthony Towns
93826726e7 ignore non-wtxidrelay compliant invs 2020-09-24 13:24:10 +01:00
Suhas Daftuar
2599277e9c Add support for tx-relay via wtxid
This adds a field to CNodeState that tracks whether to relay transactions with
that peer via wtxid, instead of txid. As of this commit the field will always
be false, but in a later commit we will add a way to negotiate turning this on
via p2p messages exchanged with the peer.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
be1b7a8916 Add wtxids to recentRejects
Previously, we only added txids to recentRejects if we were sure that the
transaction couldn't have had the wrong witness (either because the witness was
malleated or stripped).

In preparation for wtxid-based relay, we can observe that txid == wtxid for
transactions that have no witness, and add the wtxid of rejected transactions,
provided the transaction wasn't a witness-stripped one. This means that we now
add more data to the filter (as prior to this commit, any transaction with a
witness that failed to be accepted was being skipped for inclusion in the
filter) but witness malleation should still not interfere with relay of a valid
segwit transaction, because the txid of a segwit transaction would not be added
to the filter after failing validation.

In the future, having wtxids in the recent rejects filter will allow us to
skip downloading the same wtxid multiple times, once our peers use wtxids for
transaction relay.

Also add the txid to recentRejects if the transaction failed for
TX_INPUTS_NOT_STANDARD.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
73845211d1 Add wtxids of confirmed transactions to bloom filter
This is in preparation for wtxid-based invs (we need to be able to tell whether
we AlreadyHave() a transaction based on either txid or wtxid).

This also double the size of the bloom filter, which is overkill, but still
uses a manageable amount of memory.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
606755b840 Add wtxid-index to orphan map 2020-09-24 13:24:10 +01:00
Suhas Daftuar
3654937674 Add a wtxid-index to mapRelay 2020-09-24 13:24:10 +01:00
Suhas Daftuar
f7833b5bd8 Just pass a hash to AddInventoryKnown
Since it's only used for transactions, there's no need to pass in an inv type.
2020-09-24 13:24:10 +01:00
Suhas Daftuar
4df3d139b7 Add a wtxid-index to the mempool 2020-09-24 13:24:10 +01:00
Wladimir J. van der Laan
80aa83aa40 Merge #20008: [Backport] #19839 and #19842 to v0.20
498b7cb6f3 Update the vcpkg checkout commit ID in appveyor config. (Aaron Clauson)
ad99777b57 Set appveyor vm version to previous Visual Studio 2019 release. (Aaron Clauson)

Pull request description:

  Required for appveyor builds to succeed for other v0.20 backports. For example #19606 fails to build on appveyor without these commits, and succeeds with them.

  The first commit is actually reversed by the second commit (which also changes `VCPKG_COMMIT_ID`), but I'm backporting them both so that they're clean cherrypicks.

ACKs for top commit:
  laanwj:
    ACK 498b7cb6f3

Tree-SHA512: 723a834fd86c8b5f58e71b9f1abfa8b3ad67376fab8e7d3699330142a6fde98547209b2b5fa6fdf9b934a447b29bf866e2258d0c303cec1062401e924e83f297
2020-09-24 14:07:47 +02:00
Aaron Clauson
498b7cb6f3 Update the vcpkg checkout commit ID in appveyor config. 2020-09-24 09:34:33 +01:00
Aaron Clauson
ad99777b57 Set appveyor vm version to previous Visual Studio 2019 release.
Latest vm version has updated cmake and the berkeleydb vcpkg now fails to build.
2020-09-24 09:34:33 +01:00
fanquake
30926997fa Merge #19680: 0.20: Add txids with non-standard inputs to reject filter
107cf1515e test addition of unknown segwit spends to txid reject filter (Gregory Sanders)
06f9c5c3be Add txids with non-standard inputs to reject filter (Suhas Daftuar)

Pull request description:

  Backport of #19620 to 0.20.

ACKs for top commit:
  instagibbs:
    utACK 107cf1515e
  fjahr:
    utACK 107cf1515e
  jnewbery:
    utACK 107cf1515e

Tree-SHA512: d89c75fefdb6b50f40adfcf3cfdb2a791122e4d6a5903cb553c664042963577beb97a73319f9d1cb8320d32846778233c95255812c37fb4c7b1b25da161a6595
2020-09-04 20:11:47 +08:00
Andrew Chow
2d48d7dcfb Simplify and fix CWallet::SignTransaction
Backport CWallet::SignTransaction from master which is simpler and not
broken.
2020-08-16 21:37:27 -04:00
Gregory Sanders
107cf1515e test addition of unknown segwit spends to txid reject filter
Github-Pull: #19620
Rebased-From: 9f88ded82b
2020-08-07 12:45:03 -04:00
Suhas Daftuar
06f9c5c3be Add txids with non-standard inputs to reject filter
Our policy checks for non-standard inputs depend only on the non-witness
portion of a transaction: we look up the scriptPubKey of the input being
spent from our UTXO set (which is covered by the input txid), and the p2sh
checks only rely on the scriptSig portion of the input.

Consequently it's safe to add txids of transactions that fail these checks to
the reject filter, as the witness is irrelevant to the failure. This is helpful
for any situation where we might request the transaction again via txid (either
from txid-relay peers, or if we might fetch the transaction via txid due to
parent-fetching of orphans).

Further, in preparation for future witness versions being deployed on the
network, ensure that WITNESS_UNKNOWN transactions are rejected in
AreInputsStandard(), so that transactions spending v1 (or greater) witness
outputs will fall into this category of having their txid added to the reject
filter.

Github-Pull: #19620
Rebased-From: 7989901c7e
2020-08-07 12:44:24 -04:00
Wladimir J. van der Laan
bf0dc356ac Merge #19636: doc: Update 0.20.1 release notes with psbt changes
7c1c15329e doc: Update 0.20.1 release notes with psbt changes (Andrew Chow)

Pull request description:

  #19215 was missing from the list. Also felt it was important to mention this change.

Top commit has no ACKs.

Tree-SHA512: b795cf73954ff493747a793039918a5e19c377d9325e6156a8e23ba8f510af12f48b2d63854f57d482640531a865190f1fe1ece0c78a5e45d6926f9533c6d695
2020-08-01 14:15:21 +02:00
Andrew Chow
7c1c15329e doc: Update 0.20.1 release notes with psbt changes 2020-07-31 18:03:24 -04:00
Wladimir J. van der Laan
7ff64311be build: Bump version to 0.20.1-final
Tree-SHA512: 7edd91cdb03cf55201987775e5d14bfa61e3eff54abd04eaf249889e5216b12ad722188e12bb51eabb81bcd66014fd349484533744dc777e7af68a78fbc7f51b
2020-07-31 14:02:21 +02:00
MarcoFalke
6acb21e724 Merge #19612: [0.20] lint: fix shellcheck URL in CI install
7ee4769cd4 [0.20] lint: fix shellcheck URL in CI install (fanquake)

Pull request description:

  This is causing the tests to fail for backports i.e #19606. If you look in the Travis logs there, the output is:
  ```bash
  You are downloading ShellCheck from an outdated URL!
  Please update to the new URL:
  https://github.com/koalaman/shellcheck/releases/download/v0.6.0/shellcheck-v0.6.0.linux.x86_64.tar.xz
  For more information, see:
  https://github.com/koalaman/shellcheck/issues/1871
  PS: Sorry for breaking your build. The hosting costs were getting out of hand :(
  ```

ACKs for top commit:
  MarcoFalke:
    review ACK 7ee4769cd4

Tree-SHA512: 62470291e53954ab541a7109e530390410d9b8a4d3ed6f4128ab8807d2225f368b8c984342f92de802a60dd082292cb59557599b4112413a29fc9ad8e8bcd0ee
2020-07-28 14:21:44 +02:00
fanquake
7ee4769cd4 [0.20] lint: fix shellcheck URL in CI install
This is causing the tests to fail for backports etc.
2020-07-28 20:13:06 +08:00
Wladimir J. van der Laan
58feb9ecb6 doc: Add changelog and authors to release notes for 0.20.1
Tree-SHA512: 39bbead4040097dd8aeac13bed57ad5e698aa2453883d8259930399e3c0f51168913a991f303a3407b649cfbf6e223291ca0942119514060e9a164bd05fa91f5
2020-07-23 18:30:00 +02:00
Wladimir J. van der Laan
cac7a9809a qt: Translation update for 0.20.1rc1
Tree-SHA512: b03b180f9ade0e6f74a722c9704725674abc8bdfdaed4579ed3b0569c6b584359a4696821d07c070887284c9876785ae92b1ccdc11fece0d505040e97fe81413
2020-07-17 15:36:41 +02:00
Wladimir J. van der Laan
5e21c55ef0 doc: Regenerate man pages for 0.20.1rc1
Tree-SHA512: 9707cb25e7020d9db6005066675256ee34c689cf8f04586051501bb3a89f2c4eee222a39cd4c2a648dca8274f0fcf2d6aeee010cd3525ca8edae2ad2ffae9811
2020-07-17 15:33:17 +02:00
Wladimir J. van der Laan
cd34ff5464 build: Bump version to 0.20.1rc1
Tree-SHA512: 643ff61093258641e0d69456cc6fbb8c47801af494aacbf3d3f6401ce9ea8f171d27b0703845fd581dbda8037b97c2b428ed92853909d49f251a4666fe8dae9a
2020-07-17 15:07:25 +02:00
Hennadii Stepanov
8b40937493 qt: Fix QFileDialog for static builds
This change partially reverts 248e22bbc0.

Github-Pull: #19536
Rebased-From: 6457361e90
Tree-SHA512: 3b48c64f59068d70b3aec4514ebe4a091813c77518a52a81bd8a36b44d0854b3f5e187f52c0f8e4527506087cb7e2cafb7c39cb7d28e4b8f620a77980e8a4697
2020-07-17 15:00:23 +02:00
Wladimir J. van der Laan
f61398a978 Merge #19524: [0.20] Backport #19517 - Increment input value sum only once per UTXO in decodepsbt
bad9cf8f40 Increment input value sum only once per UTXO in decodepsbt (Andrew Chow)

Pull request description:

  Github-Pull: #19517
  Rebased-From: 75122780e2

ACKs for top commit:
  jnewbery:
    utACK bad9cf8f40
  laanwj:
    ACK bad9cf8f40

Tree-SHA512: 543bbe58f2dafc772289708007d72fa61592270f3de083afffb9a56274b03f2ffe8d8d509a93790ceea3a708e1c02b1ad941e23281b3db1f48766c01a930dbd6
2020-07-16 20:06:31 +02:00
Andrew Chow
bad9cf8f40 Increment input value sum only once per UTXO in decodepsbt
Github-Pull: #19517
Rebased-From: 75122780e2
2020-07-15 12:06:43 +08:00
fanquake
2f6c7c0f6f Merge #19482: doc: move-only release notes for 0.20.1
fae0e93836 Remove cached directories and associated script blocks from appveyor CI configuration. (Aaron Clauson)
faf5e256c5 appveyor: Remove clcache (MarcoFalke)
888886ed5b doc: move-only release notes for 0.20.1 (MarcoFalke)
fa39988598 doc: Clear release notes for minor release (MarcoFalke)

Pull request description:

  Also fix appveyor

ACKs for top commit:
  fanquake:
    ACK fae0e93836

Tree-SHA512: 93840aaea9163a90bacf58bd1428fd5dda1187daabfa691d5d03e4abf00238d935c10c9d420ae7f9776d78f9fb2c6eb03f4bf1655ebe03483c224ab1fe851b84
2020-07-15 11:37:36 +08:00
Aaron Clauson
fae0e93836 Remove cached directories and associated script blocks from appveyor CI configuration.
Github-Pull: #19444
Rebased-From: 961e667600
2020-07-10 13:57:31 +02:00
MarcoFalke
faf5e256c5 appveyor: Remove clcache
Github-Pull: #18640
Rebased-From: fac0c8db9f
2020-07-10 13:57:22 +02:00
MarcoFalke
888886ed5b doc: move-only release notes for 0.20.1 2020-07-10 13:53:54 +02:00
MarcoFalke
fa39988598 doc: Clear release notes for minor release 2020-07-10 13:53:51 +02:00
fanquake
01c563708f Merge #19224: [0.20] Backports
2b79ac7406 Clean up separated ban/discourage interface (Pieter Wuille)
0477348057 Replace automatic bans with discouragement filter (Pieter Wuille)
e7f06f9b0e test: remove Cirrus CI FreeBSD job (fanquake)
eb6b82a558 qa: Test concurrent wallet loading (João Barbosa)
c9b49d2856 wallet: Handle concurrent wallet loading (João Barbosa)
cf0b5a933d tests: Check that segwit inputs in psbt have both UTXO types (Andrew Chow)
3228b59b17 psbt: always put a non_witness_utxo and don't remove it (Andrew Chow)
ed5ec30804 psbt: Allow both non_witness_utxo and witness_utxo (Andrew Chow)
68e0e6f852 rpc: show both UTXOs in decodepsbt (Andrew Chow)
27786d072d trivial: Suggested cleanups to surrounding code (Russell Yanofsky)
654420d6df wallet: Minimal fix to restore conflicted transaction notifications (Russell Yanofsky)
febebc4ea6 Fix WSL file locking by using flock instead of fcntl (Samuel Dobson)
5c7151a604 gui: update Qt base translations for macOS release (fanquake)
c219d21634 build: improved output of configure for build OS (sachinkm77)
0596a6eeb5 util: Don't reference errno when pthread fails. (MIZUTA Takeshi)

Pull request description:

  Currently backports the following to the 0.20 branch:
  * #18700 - Fix locking on WSL using flock instead of fcntl
  * #18982 - wallet: Minimal fix to restore conflicted transaction notifications
  * #19059 - gui: update Qt base translations for macOS release
  * #19152 - build: improve build OS configure output
  * #19194 -  util: Don't reference errno when pthread fails.
  * #19215 - psbt: Include and allow both non_witness_utxo and witness_utxo for segwit inputs
  * #19219 - Replace automatic bans with discouragement filter
  * #19300 - wallet: Handle concurrent wallet loading

ACKs for top commit:
  amitiuttarwar:
    ACK 0477348057 2b79ac7406 by comparing to original changes, double checking the diff
  sipa:
    utACK 2b79ac7406
  laanwj:
    ACK 2b79ac7406

Tree-SHA512: e5eb31d08288fa4a6e8aba08e60b16ce1988f14f249238b1cfd18ab2c8f6fcd9f07e3c0c491d32d2361fca26e3037fb0374f37464bddcabecea29069d6737539
2020-07-10 12:45:47 +08:00
Pieter Wuille
2b79ac7406 Clean up separated ban/discourage interface
Github-Pull: #19219
Rebased-From: 2ad58381ff
2020-07-08 09:10:52 +08:00
Pieter Wuille
0477348057 Replace automatic bans with discouragement filter
This patch improves performance and resource usage around IP
addresses that are banned for misbehavior. They're already not
actually banned, as connections from them are still allowed,
but they are preferred for eviction if the inbound connection
slots are full.

Stop treating these like manually banned IP ranges, and instead
just keep them in a rolling Bloom filter of misbehaving nodes,
which isn't persisted to disk or exposed through the ban
framework. The effect remains the same: preferred for eviction,
avoided for outgoing connections, and not relayed to other peers.

Also change the name of this mechanism to better reflect reality;
they're not banned, just discouraged.

Contains release notes and several interface improvements by
John Newbery.

Github-Pull: #19219
Rebased-From: b691f2df5f
2020-07-08 09:09:46 +08:00
fanquake
e7f06f9b0e test: remove Cirrus CI FreeBSD job
This has been removed from the master branch, and always seems to fail
at the installing packages phase. i.e:
```bash
pkg install -y autoconf automake boost-libs git gmake libevent libtool pkgconf python3 ccache
Updating FreeBSD repository catalogue...
Fetching meta.txz: . done
pkg: repository meta /var/db/pkg/FreeBSD.meta has wrong version 2
repository FreeBSD has no meta file, using default settings
Fetching packagesite.txz: .......... done
pkg: repository meta /var/db/pkg/FreeBSD.meta has wrong version 2
pkg: Repository FreeBSD load error: meta cannot be loaded No error: 0
Unable to open created repository FreeBSD
Unable to update repository FreeBSD
Error updating repositories!

Exit status: 3
```
2020-07-03 09:59:33 +08:00
João Barbosa
eb6b82a558 qa: Test concurrent wallet loading
Github-Pull: #19300
Rebased-From: 9b009fae6e
2020-07-03 09:58:17 +08:00
João Barbosa
c9b49d2856 wallet: Handle concurrent wallet loading
Github-Pull: #19300
Rebased-From: b9971ae585
2020-07-03 09:51:24 +08:00
Andrew Chow
cf0b5a933d tests: Check that segwit inputs in psbt have both UTXO types
Github-Pull: #19215
Rebased-From: 84d295e513
2020-07-03 09:22:21 +08:00
Andrew Chow
3228b59b17 psbt: always put a non_witness_utxo and don't remove it
Offline signers will always need a non_witness_utxo so make sure it is
there.

Github-Pull: #19215
Rebased-From: 4600479058
2020-07-03 09:21:42 +08:00
Andrew Chow
ed5ec30804 psbt: Allow both non_witness_utxo and witness_utxo
Github-Pull: #19215
Rebased-From: 5279d8bc07
2020-07-03 09:18:54 +08:00
Andrew Chow
68e0e6f852 rpc: show both UTXOs in decodepsbt
Github-Pull: #19215
Rebased-From: 72f6bec1da
2020-07-03 09:15:42 +08:00
Russell Yanofsky
27786d072d trivial: Suggested cleanups to surrounding code
https://github.com/bitcoin/bitcoin/pull/18982#pullrequestreview-416974841

Github-Pull: #18982
Rebased-From: 7eaf86d3bf
2020-06-09 21:55:27 +08:00
Russell Yanofsky
654420d6df wallet: Minimal fix to restore conflicted transaction notifications
This fix is a based on the fix by Antoine Riard <ariard@student.42.fr> in
https://github.com/bitcoin/bitcoin/pull/18600.

Unlike that PR, which implements some new behavior, this just restores previous
wallet notification and status behavior for transactions removed from the
mempool because they conflict with transactions in a block. The behavior was
accidentally changed in two `CWallet::BlockConnected` updates:
a31be09bfd and
7e89994133 from
https://github.com/bitcoin/bitcoin/pull/16624, causing issue
https://github.com/bitcoin/bitcoin/issues/18325.

The change here could be improved and replaced with a more comprehensive
cleanup, so it includes a detailed comment explaining future considerations.

Fixes #18325

Co-authored-by: Antoine Riard <ariard@student.42.fr>

Github-Pull: #18982
Rebased-From: b604c5c8b5
2020-06-09 21:12:38 +08:00
Samuel Dobson
febebc4ea6 Fix WSL file locking by using flock instead of fcntl
Co-authored-by: sipa <pieter@wuille.net>

Github-Pull: #18700
Rebased-From: e8fa0a3d20
2020-06-09 21:09:22 +08:00
fanquake
5c7151a604 gui: update Qt base translations for macOS release
These haven't been updated since their addition, so this updates the list that
controls which qt base translations are bundled with the macOS binary, to all the
languages that are available with qt 5.9.8.

This could probably be improved in some way, however qt updates are infrequent,
and I didn't want to spend any more time looking at this. Also given that no-one
seems to have noticed and/or reported this it wouldn't seem high-priority.

Could be backported to 0.20.1.

Github-Pull: #19059
Rebased-From: 69bfcac27a
2020-06-09 21:08:32 +08:00
sachinkm77
c219d21634 build: improved output of configure for build OS
Github-Pull: #19152
Rebased-From: 0fef60c63d
2020-06-09 21:07:45 +08:00
MIZUTA Takeshi
0596a6eeb5 util: Don't reference errno when pthread fails.
Pthread library does not set errno.
Pthread library's errno is returned by return value.

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>

Github-Pull: #19194
Rebased-From: cb38b069b0
2020-06-09 21:06:15 +08:00
MarcoFalke
cd32134bda Merge #19170: [0.20] Add missing QPainterPath include
384d3f991c Add missing QPainterPath include (Andrew Chow)

Pull request description:

  This is needed to compile with Qt 5.15.

  Github-Pull: #19097
  Rebased-From: 79b0a69e09

Top commit has no ACKs.

Tree-SHA512: 23c4604cddb0bf5955afa6dfb6be87989df591e5f5ca5b85257c72e916f29337012b24c9ab5374a3289700ab7518ddb48f21195a2173ea1f935d69bd2ad13b8b
2020-06-04 18:21:28 -04:00
Andrew Chow
384d3f991c Add missing QPainterPath include
This is needed to compile with Qt 5.15.

Github-Pull: #19097
Rebased-From: 79b0a69e09
2020-06-04 21:56:05 +00:00
MarcoFalke
e42c959c1d Merge #19019: [0.20] Fix GBT: Restore "!segwit" and "csv" to "rules" key
412d5fe879 QA: feature_segwit: Check that template "rules" includes "!segwit" as appropriate (Luke Dashjr)
2abe8cc3b7 Bugfix: Include "csv","!segwit" in "rules" (Luke Dashjr)

Pull request description:

  Original branch merges cleanly (no rebase needed)

  See also #17946

ACKs for top commit:
  jnewbery:
    utACK 412d5fe879

Tree-SHA512: 8b269f7782c10f02dc245cc377d91f594474eade6a32184a49fa2ed3928d91917e4b83eefee6947bfb5ffff54eca2781f8cf2169c1f0ad3fefca1d4b3cf304dd
2020-06-02 17:55:19 -04:00
Wladimir J. van der Laan
a62f0ed64f doc: Manpages update pre-final
Tree-SHA512: 00d03cb9913a7fe3fe90b12a866e88e08c79fdfdb05fcf043d77623b2d30cadd56557db1f225b428fd03d4b4bc4f24f66205d8330d025ed015d3a12dffd5222e
2020-06-02 09:43:04 +02:00
Wladimir J. van der Laan
808c8d15fe build: Set rc to 0 for -final
Tree-SHA512: 07ec7c9f9f32aeb6249a406b4d1738a7f8c988d157ecd84a4eb13f3d86b9a6c6407d4c14669cc4cad5483e9b2f393693833adc8e9fbd3cc75311257ed6894652
2020-06-02 09:39:22 +02:00
fanquake
60e8e74d10 Merge #19138: doc: Merge 0.20.0 release notes from wiki
1dfad42595 doc: Merge 0.20.0 release notes from wiki (Wladimir J. van der Laan)

Pull request description:

  Need to do this before -final.

ACKs for top commit:
  fanquake:
    ACK 1dfad42595

Tree-SHA512: 5db5a9ed8860b78941ebf0e1d966564ac0e2914fd18fc0c2f4e7a32d78306c1bb1aa2fd416e1fb01d427ff69c698a019498fc94a6e580c5d84a53c0716e675f1
2020-06-02 14:14:17 +08:00
Wladimir J. van der Laan
1dfad42595 doc: Merge 0.20.0 release notes from wiki 2020-06-02 06:48:32 +02:00
Wladimir J. van der Laan
6f7f94a276 build: Bump RC to rc2
Tree-SHA512: c1bb2b3fb772704ab0266a30011869cb326608b731b1c7feaea107e1cbd0e67f7cf500ca4be36c705d8a3e6d7fcf324c52c062164d6ba315fbf0b99eed362b76
2020-05-15 14:19:14 +02:00
Wladimir J. van der Laan
0793eca3a6 qt: Pre-rc2 translations update
Tree-SHA512: 50d0605712273d661f22d0ded2f8010d69fd8baa94537419d3d0ff82bf5f407e6d7bce0e8cf8ff32a2d8e40feb224124f30e22c52b0f132c3a56128335a2593a
2020-05-15 14:13:03 +02:00
MarcoFalke
17bdf2afae Merge #18973: [0.20] Final backports for rc2
245c862cfd test: disable script fuzz tests (fanquake)
9a8fb4cf4b fuzz: Remove enumeration of expected deserialization exceptions in ProcessMessage(...) fuzzer (practicalswift)
6161c94a61 [net processing] Only send a getheaders for one block in an INV (John Newbery)
cf2a6e2a39 test: Remove const to work around compiler error on xenial (Wladimir J. van der Laan)
cc7d34465b miner: Avoid stack-use-after-return in validationinterface (MarcoFalke)
37a620748b test: Add unregister_validation_interface_race test (MarcoFalke)
ff4dc20750 gui: Fix manual coin control with multiple wallets loaded (João Barbosa)
ed0afe8c1f test: Add test for conflicted wallet tx notifications (Russell Yanofsky)
251e321ad7 rpc: Relock wallet only if most recent callback (João Barbosa)
ca4dac48c5 rpc: Add mutex to guard deadlineTimers (João Barbosa)
a3fe458a1e [docs] Improve commenting in ProcessGetData() (John Newbery)
011532e380 [test] test that an invalid GETDATA doesn't prevent processing of future messages (Amiti Uttarwar)
1e73d7248a [net processing] ignore unknown INV types in GETDATA messages (Amiti Uttarwar)
fb821731eb [net processing] ignore tx GETDATA from blocks-only peers (Amiti Uttarwar)
315ae14f3f gui: Fix itemWalletAddress leak when not tree mode (João Barbosa)

Pull request description:

  Backports the following PRs to the 0.20 branch:

  * https://github.com/bitcoin/bitcoin/pull/18578: gui: Fix leak in CoinControlDialog::updateView
  * https://github.com/bitcoin/bitcoin/pull/18808: [net processing] Drop unknown types in getdata
  * https://github.com/bitcoin/bitcoin/pull/18814: rpc: Relock wallet only if most recent callback
  * https://github.com/bitcoin/bitcoin/pull/18878: test: Add test for conflicted wallet tx notifications
  * https://github.com/bitcoin/bitcoin/pull/18894: gui: Fix manual coin control with multiple wallets loaded
  * https://github.com/bitcoin/bitcoin/pull/18742: miner: Avoid stack-use-after-return in validationinterface
  * https://github.com/bitcoin/bitcoin/pull/18962: net processing: Only send a getheaders for one block in an INV
  * https://github.com/bitcoin/bitcoin/pull/18975: test: Remove const to work around compiler error on xenial

ACKs for top commit:
  promag:
    Tested ACK 245c862cfd coin control with multiple wallets.
  laanwj:
    ACK 245c862cfd
  MarcoFalke:
    ACK 245c862cfd solved the conflicts myself as a sanity check. Did not re-review 🍷

Tree-SHA512: 285e5a5fad5bbeba6032742c65dc68836e8eccfcceda9e69fec4ddd162a3f61679a96f9bbe3d434267835af67c21ac4c05accf6f63e827c2eb47203c6daafe31
2020-05-15 07:54:36 -04:00
fanquake
245c862cfd test: disable script fuzz tests
Given that #18413 has not been backported.
2020-05-15 15:50:32 +08:00
practicalswift
9a8fb4cf4b fuzz: Remove enumeration of expected deserialization exceptions in ProcessMessage(...) fuzzer
Github-Pull: #18757
Rebased-From: fdceb63283
2020-05-15 12:03:50 +08:00
John Newbery
6161c94a61 [net processing] Only send a getheaders for one block in an INV
Headers-first is the primary method of announcement on the network. If a
node fell back sending blocks by inv, it's probably for a re-org. The
final block hash provided should be the highest, so send a getheaders
and then fetch the blocks we need to catch up.

Github-Pull: #18962
Rebased-From: 746736639e
2020-05-15 08:10:05 +08:00
Wladimir J. van der Laan
cf2a6e2a39 test: Remove const to work around compiler error on xenial
Fix the following error in travis:

    test/validationinterface_tests.cpp:26:36: error: default initialization of an object of const type 'const BlockValidationState' without a user-provided default constructor

    const BlockValidationState state_dummy;

Github-Pull: #18975
Rebased-From: 050e2ee6f2
2020-05-15 08:08:15 +08:00
MarcoFalke
cc7d34465b miner: Avoid stack-use-after-return in validationinterface
This is achieved by switching to a shared_ptr.

Also, switch the validationinterfaces in the tests to use shared_ptrs
for the same reason.

Github-Pull: #18742
Rebased-From: 7777f2a4bb
2020-05-15 07:42:08 +08:00
MarcoFalke
37a620748b test: Add unregister_validation_interface_race test
This commit is (intentionally) adding a broken test. The test is broken
because it registering a subscriber object that can go out of scope
while events are still being sent.

To run the broken test and reproduce the bug:
  - Remove comment /** and */
  - ./configure --with-sanitizers=address
  - export ASAN_OPTIONS=detect_leaks=0
  - make
  - while ./src/test/test_bitcoin -t validationinterface_tests/unregister_validation_interface_race --catch_system_errors=no  ; do true; done

Github-Pull: #18742
Rebased-From: fab6d060ce
2020-05-15 07:42:08 +08:00
João Barbosa
ff4dc20750 gui: Fix manual coin control with multiple wallets loaded
Github-Pull: #18894
Rebased-From: a8b5f1b133
2020-05-15 07:42:08 +08:00
Russell Yanofsky
ed0afe8c1f test: Add test for conflicted wallet tx notifications
Add test coverage for conflicted wallet transaction notifications so we improve
current behavior and avoid future regressions

https://github.com/bitcoin/bitcoin/pull/9240 - accidental break
https://github.com/bitcoin/bitcoin/issues/9479 - bug report
https://github.com/bitcoin/bitcoin/pull/9371 - fix
https://github.com/bitcoin/bitcoin/pull/16624 - accidental break
https://github.com/bitcoin/bitcoin/issues/18325 - bug report
https://github.com/bitcoin/bitcoin/pull/18600 - potential fix

Github-Pull: #18878
Rebased-From: f963a68051
2020-05-15 07:42:08 +08:00
João Barbosa
251e321ad7 rpc: Relock wallet only if most recent callback
Github-Pull: #18814
Rebased-From: 9f59dde974
2020-05-15 07:42:08 +08:00
João Barbosa
ca4dac48c5 rpc: Add mutex to guard deadlineTimers
Github-Pull: #18814
Rebased-From: a2e6db5c4f
2020-05-15 07:42:07 +08:00
John Newbery
a3fe458a1e [docs] Improve commenting in ProcessGetData()
Github-Pull: #18808
Rebased-From: 9847e205bf
2020-05-15 07:42:07 +08:00
Amiti Uttarwar
011532e380 [test] test that an invalid GETDATA doesn't prevent processing of future messages
Co-Authored-By: John Newbery <john@johnnewbery.com>

Github-Pull: #18808
Rebased-From: 2f032556e0
2020-05-15 07:42:07 +08:00
Amiti Uttarwar
1e73d7248a [net processing] ignore unknown INV types in GETDATA messages
Co-Authored-By: John Newbery <john@johnnewbery.com>

Github-Pull: #18808
Rebased-From: e257cf71c8
2020-05-15 07:42:07 +08:00
Amiti Uttarwar
fb821731eb [net processing] ignore tx GETDATA from blocks-only peers
Co-Authored-By: John Newbery <john@johnnewbery.com>

Github-Pull: #18808
Rebased-From: 047ceac142
2020-05-15 07:42:07 +08:00
João Barbosa
315ae14f3f gui: Fix itemWalletAddress leak when not tree mode
Github-Pull: #18578
Rebased-From: e8123eae40
2020-05-15 07:42:06 +08:00
MarcoFalke
aa7c6858e6 travis: Remove s390x
Github-Pull: #18905
Rebased-From: 8c705ff129
Tree-SHA512: b45e091f00237b96263a967a52ce35bb4782b41a9c69314b30337ca46e9b9a1ed9a9415a30ea5195625e3cc3b231f194a5e097f78cf7159f8090c1e7c826b221
2020-05-14 17:41:16 +02:00
MarcoFalke
7d87ba0e02 travis: Remove valgrind
Github-Pull: #18899
Rebased-From: fa082d0a57
Tree-SHA512: 29b26d3e2cf76fa9762035c2b1444323460c5a6a8d742addd2ec143f2b028d40d5d7992623a41718e550d287f82d4c4781aa82b4cb41504e66567afad7b9215f
2020-05-14 17:39:00 +02:00
Wladimir J. van der Laan
5747c4ca1b Merge #18945: build: Ensure source tarball has leading directory name (0.20)
59d57f6c10 build: Ensure source tarball has leading directory name (Luke Dashjr)

Pull request description:

  In the interest of moving 0.20.0 forward and being able to do rc2, extract and backport the non-controversial part from #18818.: ensure that the source tarball has leading directory name.

ACKs for top commit:
  Sjors:
    tACK 59d57f6c10
  hebasto:
    ACK 59d57f6c10.

Tree-SHA512: 6562f4cd631d2ca3c331a05d028a3c46289a7e146319b8718f96b766f952e3b831d05e249ebcc1b27f5b91a6f318a5fdd86d07b2a80ce792d4b1b032e982ed6a
2020-05-12 16:18:44 +02:00
Luke Dashjr
59d57f6c10 build: Ensure source tarball has leading directory name 2020-05-11 15:09:08 +02:00
Wladimir J. van der Laan
fb5b098598 Merge #18748: [0.20] rc2 Backports
7f7548d822 rpc: Do not advertise dumptxoutset as a way to flush the chainstate (MarcoFalke)
a9ca65bd29 Fix naming of macOS SDK and clarify version (Andrew Chow)
54d2063d1a Do not expose and consider -logthreadnames when it does not work (Hennadii Stepanov)
6986b26346 build: fix ASLR for bitcoin-cli on Windows (fanquake)
1d1e3585fe build: Set libevent minimum version to 2.0.21 (Hennadii Stepanov)
842b13a5f4 Avoid non-trivial global constants in SHA-NI code (Pieter Wuille)
ade4185e63 gitian: Add missing automake package to gitian-win-signer.yml (Andrew Chow)

Pull request description:

  Currently backports the following to the 0.20 branch:

  * #18598 - gitian: Add missing automake package to gitian-win-signer.yml
  * #18702 - build: fix ASLR for bitcoin-cli on Windows
  * #18676 - build: Check libevent minimum version in configure script
  * #18665 - Do not expose and consider -logthreadnames when it does not work
  * #18553 - Avoid non-trivial global constants in SHA-NI code
  * #18589 - Fix naming of macOS SDK and clarify version

ACKs for top commit:
  laanwj:
    ACK 7f7548d822

Tree-SHA512: 2cba748414a440e3fb901940085a7ae059e8b926c9187fbbbdeb7846a32e7374f318cc21e499c911ff803c42aef2c844b04af10b87f9c5a2b3edf6deb03ebb04
2020-05-11 14:58:52 +02:00
MarcoFalke
7f7548d822 rpc: Do not advertise dumptxoutset as a way to flush the chainstate
Github-Pull: #18809
Rebased-From: fac0cf6e55
2020-05-05 07:48:11 +08:00
Andrew Chow
a9ca65bd29 Fix naming of macOS SDK and clarify version
Github-Pull: #18589
Rebased-From: eb37275a6f
2020-04-24 17:24:24 +08:00
Hennadii Stepanov
54d2063d1a Do not expose and consider -logthreadnames when it does not work
Github-Pull: #18665
Rebased-From: b91e4ae0d8
2020-04-23 14:31:32 +08:00
fanquake
6986b26346 build: fix ASLR for bitcoin-cli on Windows
ASLR is not currently working for the bitcoin-cli.exe binary. This is
due to it not having a .reloc section, which is stripped by default by
the mingw-w64 ld we use for gitian builds. A good summary of issues with
ld and mingw-w64 is available in this thread:
https://sourceware.org/bugzilla/show_bug.cgi?id=19011.

All other Windows binaries that we distribute (bitcoind, bitcoin-qt,
bitcoin-wallet, bitcoin-tx and test_bitcoin) do not suffer this issue,
and currently having working ASLR. This is due to them exporting
(inadvertent or not) libsecp256k1 symbols, and, as a result, the .reloc
section is not stripped by ld.

This change is a temporary workaround, also the same one described here:
https://www.kb.cert.org/vuls/id/307144/, that causes main() to be
exported. Exporting a symbol will mean that the .reloc section is not
stripped, and ASLR will function correctly.

Github-Pull: #18702
Rebased-From: 315a4d36f7
2020-04-23 14:30:39 +08:00
Hennadii Stepanov
1d1e3585fe build: Set libevent minimum version to 2.0.21
Github-Pull: #18676
Rebased-From: b68e717967
2020-04-23 14:29:07 +08:00
Pieter Wuille
842b13a5f4 Avoid non-trivial global constants in SHA-NI code
Github-Pull: #18553
Rebased-From: 8508473094
2020-04-23 14:24:10 +08:00
Andrew Chow
ade4185e63 gitian: Add missing automake package to gitian-win-signer.yml
automake is needed to build osslsigncode otherwise autogen.sh fails.

Github-Pull: #18598
Rebased-From: e44aeefaae
2020-04-23 13:32:59 +08:00
Wladimir J. van der Laan
cd1f5bf1db qt: Update translations pre-rc1
Tree-SHA512: 6c695a4a8adc51b72660f012f27548380d44e7b11e10cfa656ef70b0c5412981036a2694f7103821c8eb0148c50b94c69ce5271ed467ae6783a591192a76abdd
2020-04-10 19:44:47 +02:00
Wladimir J. van der Laan
cd0c998905 doc: Update manpages pre-rc1
Tree-SHA512: 2db55d73d5e4531e8e0699b5572c5f10040054e5955aab67992c9bbd764c910124ab9d09125f69dd25699501a2fc514c274619d1bedf08e0363e21e19241b7f2
2020-04-10 19:41:14 +02:00
Wladimir J. van der Laan
004b0e1b92 build: Bump version to 0.20.0
Bump version to 0.20.0, enable release and set rc1.

Tree-SHA512: aea19b8f7c069dd8798718af392eea89032aa04fa8644a3f115200c662b1dbfb4a5bfca87fe48bb2e77c977b99e1195ccc9752c46ff3f7bf706f2a980b3dd92e
2020-04-10 18:01:50 +02:00
Luke Dashjr
412d5fe879 QA: feature_segwit: Check that template "rules" includes "!segwit" as appropriate 2020-01-17 05:28:48 +00:00
Luke Dashjr
2abe8cc3b7 Bugfix: Include "csv","!segwit" in "rules"
They have been missing since buried deployments were merged
2020-01-17 05:28:48 +00:00
191 changed files with 53824 additions and 6095 deletions

View File

@@ -5,80 +5,53 @@ configuration: Release
platform: x64
clone_depth: 5
environment:
APPVEYOR_SAVE_CACHE_ON_ERROR: true
CLCACHE_SERVER: 1
PATH: 'C:\Python37-x64;C:\Python37-x64\Scripts;%PATH%'
PYTHONUTF8: 1
QT_DOWNLOAD_URL: 'https://github.com/sipsorcery/qt_win_binary/releases/download/v1.6/Qt5.9.8_x64_static_vs2019.zip'
QT_DOWNLOAD_HASH: '9a8c6eb20967873785057fdcd329a657c7f922b0af08c5fde105cc597dd37e21'
QT_LOCAL_PATH: 'C:\Qt5.9.8_x64_static_vs2019'
VCPKG_INSTALL_PATH: 'C:\tools\vcpkg\installed'
VCPKG_COMMIT_ID: 'ed0df8ecc4ed7e755ea03e18aaf285fd9b4b4a74'
cache:
- C:\tools\vcpkg\installed -> build_msvc\vcpkg-packages.txt
- C:\Users\appveyor\clcache -> .appveyor.yml, build_msvc\**, **\Makefile.am, **\*.vcxproj.in
- C:\Qt5.9.8_x64_static_vs2019
VCPKG_COMMIT_ID: 'f3f329a048eaff759c1992c458f2e12351486bc7'
install:
- cmd: pip install --quiet git+https://github.com/frerich/clcache.git@v4.2.0
# Disable zmq test for now since python zmq library on Windows would cause Access violation sometimes.
# - cmd: pip install zmq
# Powershell block below is to install the c++ dependencies via vcpkg. The pseudo code is:
# 1. Check whether the vcpkg install directory exists (note that updating the vcpkg-packages.txt file
# will cause the appveyor cache rules to invalidate the directory)
# 2. If the directory is missing:
# a. Checkout the vcpkg source (including port files) for the specific checkout and build the vcpkg binary,
# b. Install the missing packages.
- ps: |
$env:PACKAGES = Get-Content -Path build_msvc\vcpkg-packages.txt
Write-Host "vcpkg list: $env:PACKAGES"
if(!(Test-Path -Path ($env:VCPKG_INSTALL_PATH))) {
cd c:\tools\vcpkg
$env:GIT_REDIRECT_STDERR = '2>&1' # git is writing non-errors to STDERR when doing git pull. Send to STDOUT instead.
git pull origin master
git checkout $env:VCPKG_COMMIT_ID
.\bootstrap-vcpkg.bat
Add-Content "C:\tools\vcpkg\triplets\$env:PLATFORM-windows-static.cmake" "set(VCPKG_BUILD_TYPE release)"
.\vcpkg install --triplet $env:PLATFORM-windows-static $env:PACKAGES.split() > $null
cd "$env:APPVEYOR_BUILD_FOLDER"
}
else {
Write-Host "required vcpkg packages already installed."
}
c:\tools\vcpkg\vcpkg integrate install
Write-Host "vcpkg installing packages: $env:PACKAGES"
cd c:\tools\vcpkg
$env:GIT_REDIRECT_STDERR = '2>&1' # git is writing non-errors to STDERR when doing git pull. Send to STDOUT instead.
git pull origin master > $null
git -c advice.detachedHead=false checkout $env:VCPKG_COMMIT_ID
.\bootstrap-vcpkg.bat > $null
Add-Content "C:\tools\vcpkg\triplets\$env:PLATFORM-windows-static.cmake" "set(VCPKG_BUILD_TYPE release)"
.\vcpkg install --triplet $env:PLATFORM-windows-static $env:PACKAGES.split() > $null
Write-Host "vcpkg packages installed successfully."
.\vcpkg integrate install
cd "$env:APPVEYOR_BUILD_FOLDER"
before_build:
- ps: clcache -M 536870912
# Powershell block below is to download and extract the Qt static libraries. The pseudo code is:
# 1. If the Qt destination directory exists assume it is correct and do nothing. To
# force a fresh install of the packages delete the job's appveyor cache.
# 2. Otherwise:
# a. Download the zip file with the prebuilt Qt static libraries.
# b. Check that the downloaded file matches the expected hash.
# c. Extract the zip file to the specific destination path expected by the msbuild projects.
- ps: |
if(!(Test-Path -Path ($env:QT_LOCAL_PATH))) {
Write-Host "Downloading Qt binaries.";
Invoke-WebRequest -Uri $env:QT_DOWNLOAD_URL -Out qtdownload.zip;
Write-Host "Qt binaries successfully downloaded, checking hash against $env:QT_DOWNLOAD_HASH...";
if((Get-FileHash qtdownload.zip).Hash -eq $env:QT_DOWNLOAD_HASH) {
Expand-Archive qtdownload.zip -DestinationPath $env:QT_LOCAL_PATH;
Write-Host "Qt binary download matched the expected hash.";
}
else {
Write-Host "ERROR: Qt binary download did not match the expected hash.";
Exit-AppveyorBuild;
}
Write-Host "Downloading Qt binaries.";
Invoke-WebRequest -Uri $env:QT_DOWNLOAD_URL -Out qtdownload.zip;
Write-Host "Qt binaries successfully downloaded, checking hash against $env:QT_DOWNLOAD_HASH...";
if((Get-FileHash qtdownload.zip).Hash -eq $env:QT_DOWNLOAD_HASH) {
Expand-Archive qtdownload.zip -DestinationPath $env:QT_LOCAL_PATH;
Write-Host "Qt binary download matched the expected hash.";
}
else {
Write-Host "Qt binaries already present.";
Write-Host "ERROR: Qt binary download did not match the expected hash.";
Exit-AppveyorBuild;
}
- cmd: python build_msvc\msvc-autogen.py
- ps: Start-Process clcache-server
- ps: fsutil behavior set disablelastaccess 0 # Enable Access time feature on Windows (for clcache)
build_script:
- cmd: msbuild /p:TrackFileAccess=false /p:CLToolExe=clcache.exe build_msvc\bitcoin.sln /m /v:q /nologo
- cmd: msbuild /p:TrackFileAccess=false build_msvc\bitcoin.sln /m /v:q /nologo
after_build:
- ps: fsutil behavior set disablelastaccess 1 # Disable Access time feature on Windows (better performance)
- ps: clcache -z
#- 7z a bitcoin-%APPVEYOR_BUILD_VERSION%.zip %APPVEYOR_BUILD_FOLDER%\build_msvc\%platform%\%configuration%\*.exe
test_script:
- cmd: src\test_bitcoin.exe -l test_suite

View File

@@ -1,33 +1,3 @@
task:
name: "FreeBsd 12.0 amd64 [GOAL: install] [no depends, only system libs]"
freebsd_instance:
image: freebsd-12-0-release-amd64
cpu: 8
memory: 8G
timeout_in: 60m
env:
MAKEJOBS: "-j9"
CONFIGURE_OPTS: "--disable-dependency-tracking"
GOAL: "install"
TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
CCACHE_SIZE: "200M"
CCACHE_COMPRESS: 1
CCACHE_DIR: "/tmp/ccache_dir"
ccache_cache:
folder: "/tmp/ccache_dir"
install_script:
- pkg install -y autoconf automake boost-libs git gmake libevent libtool pkgconf python3 ccache
- ./contrib/install_db4.sh $(pwd)
- ccache --max-size=${CCACHE_SIZE}
configure_script:
- ./autogen.sh
- ./configure ${CONFIGURE_OPTS} BDB_LIBS="-L$(pwd)/db4/lib -ldb_cxx-4.8" BDB_CFLAGS="-I$(pwd)/db4/include" || ( cat config.log && false)
make_script:
- gmake ${MAKEJOBS} ${GOAL} || ( echo "Build failure. Verbose build follows." && gmake ${GOAL} V=1 ; false )
check_script:
- gmake check ${MAKEJOBS} VERBOSE=1
functional_test_script:
- ./test/functional/test_runner.py --jobs 9 --ci --extended --exclude feature_dbcrash --combinedlogslen=1000 --quiet --failfast
task:
name: "x86_64 Linux [GOAL: install] [bionic] [Using ./ci/ system]"
container:

View File

@@ -88,26 +88,6 @@ jobs:
FILE_ENV="./ci/test/00_setup_env_arm.sh"
QEMU_USER_CMD=""
- stage: test
name: 's390x native BE [GOAL: install] [bionic] [no depends, no GUI]'
arch: s390x
dist: bionic
addons:
apt:
packages:
- bsdmainutils
- libboost-filesystem-dev
- libboost-system-dev
- libboost-test-dev
- libboost-thread-dev
- libdb++-dev
- libdb-dev
- libevent-dev
env: >-
DANGER_RUN_CI_ON_HOST=true
CI_USE_APT_INSTALL=no
FILE_ENV="./ci/test/00_setup_env_s390x_host.sh"
# s390 build was disabled temporarily because of disk space issues on the Travis VM
#
# - stage: test
@@ -143,21 +123,11 @@ jobs:
env: >-
FILE_ENV="./ci/test/00_setup_env_native_asan.sh"
- stage: test
name: 'x86_64 Linux [GOAL: install] [bionic] [no depends, only system libs, valgrind]'
env: >-
FILE_ENV="./ci/test/00_setup_env_native_valgrind.sh"
- stage: test
name: 'x86_64 Linux [GOAL: install] [focal] [no depends, only system libs, sanitizers: fuzzer,address,undefined]'
env: >-
FILE_ENV="./ci/test/00_setup_env_native_fuzz.sh"
- stage: test
name: 'x86_64 Linux [GOAL: install] [focal] [no depends, only system libs, fuzzers under valgrind]'
env: >-
FILE_ENV="./ci/test/00_setup_env_native_fuzz_with_valgrind.sh"
- stage: test
name: 'x86_64 Linux [GOAL: install] [bionic] [no wallet]'
env: >-

View File

@@ -41,7 +41,7 @@ OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
OSX_QT_TRANSLATIONS = ar,bg,ca,cs,da,de,es,fa,fi,fr,gd,gl,he,hu,it,ja,ko,lt,lv,pl,pt,ru,sk,sl,sv,uk,zh_CN,zh_TW
DIST_CONTRIB = \
$(top_srcdir)/contrib/linearize/linearize-data.py \

View File

@@ -12,16 +12,16 @@
#define CLIENT_VERSION_BUILD 0
/* Version is release */
#define CLIENT_VERSION_IS_RELEASE false
#define CLIENT_VERSION_IS_RELEASE true
/* Major version */
#define CLIENT_VERSION_MAJOR 0
/* Minor version */
#define CLIENT_VERSION_MINOR 19
#define CLIENT_VERSION_MINOR 20
/* Build revision */
#define CLIENT_VERSION_REVISION 99
#define CLIENT_VERSION_REVISION 2
/* Copyright holder(s) before %s replacement */
#define COPYRIGHT_HOLDERS "The %s developers"
@@ -265,7 +265,7 @@
#define PACKAGE_NAME "Bitcoin Core"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "Bitcoin Core 0.19.99"
#define PACKAGE_STRING "Bitcoin Core 0.20.2"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "bitcoin"
@@ -274,7 +274,7 @@
#define PACKAGE_URL "https://bitcoincore.org/"
/* Define to the version of this package. */
#define PACKAGE_VERSION "0.19.99"
#define PACKAGE_VERSION "0.20.2"
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */

View File

@@ -11,5 +11,5 @@ travis_retry pip3 install flake8==3.7.8
travis_retry pip3 install yq
SHELLCHECK_VERSION=v0.6.0
curl -s "https://storage.googleapis.com/shellcheck/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/
curl -sL "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/
export PATH="/tmp/shellcheck-${SHELLCHECK_VERSION}:${PATH}"

View File

@@ -1,14 +0,0 @@
#!/usr/bin/env bash
#
# Copyright (c) 2019 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
export LC_ALL=C.UTF-8
export HOST=s390x-linux-gnu
export NO_DEPENDS=1
export BITCOIN_CONFIG="--with-incompatible-bdb --enable-reduce-exports"
export RUN_UNIT_TESTS=true
export RUN_FUNCTIONAL_TESTS=true
export GOAL="install"

View File

@@ -1,10 +1,10 @@
AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 19)
define(_CLIENT_VERSION_REVISION, 99)
define(_CLIENT_VERSION_MINOR, 20)
define(_CLIENT_VERSION_REVISION, 2)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_RC, 0)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2020)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
@@ -1140,7 +1140,7 @@ fi
if test x$use_boost = xyes; then
dnl Minimum required Boost version
define(MINIMUM_REQUIRED_BOOST, 1.47.0)
define(MINIMUM_REQUIRED_BOOST, 1.48.0)
dnl Check for boost libs
AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
@@ -1265,9 +1265,9 @@ if test x$use_pkgconfig = xyes; then
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
fi
if test x$build_bitcoin_cli$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench != xnonononono; then
PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
PKG_CHECK_MODULES([EVENT], [libevent >= 2.0.21],, [AC_MSG_ERROR(libevent version 2.0.21 or greater not found.)])
if test x$TARGET_OS != xwindows; then
PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads >= 2.0.21],, [AC_MSG_ERROR(libevent_pthreads version 2.0.21 or greater not found.)])
fi
fi
@@ -1668,7 +1668,7 @@ echo " gprof enabled = $enable_gprof"
echo " werror = $enable_werror"
echo
echo " target os = $TARGET_OS"
echo " build os = $BUILD_OS"
echo " build os = $build_os"
echo
echo " CC = $CC"
echo " CFLAGS = $CFLAGS"

View File

@@ -191,4 +191,4 @@ script: |
done
mkdir -p ${OUTDIR}/src
git archive --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
git archive --prefix="${DISTNAME}/" --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD

View File

@@ -7,9 +7,13 @@ architectures:
- "amd64"
packages:
- "faketime"
- "python3-pip"
remotes:
- "url": "https://github.com/bitcoin-core/bitcoin-detached-sigs.git"
"dir": "signature"
- "url": "https://github.com/achow101/signapple.git"
"dir": "signapple"
"commit": "b084cbbf44d5330448ffce0c7d118f75781b64bd"
files:
- "bitcoin-osx-unsigned.tar.gz"
script: |
@@ -30,11 +34,19 @@ script: |
chmod +x ${WRAP_DIR}/${prog}
done
UNSIGNED=bitcoin-osx-unsigned.tar.gz
# Install signapple
cd signapple
python3 -m pip install -U pip setuptools
python3 -m pip install .
export PATH="$HOME/.local/bin":$PATH
cd ..
UNSIGNED_TARBALL=bitcoin-osx-unsigned.tar.gz
UNSIGNED_APP=dist/Bitcoin-Qt.app
SIGNED=bitcoin-osx-signed.dmg
tar -xf ${UNSIGNED}
tar -xf ${UNSIGNED_TARBALL}
OSX_VOLNAME="$(cat osx_volname)"
./detached-sig-apply.sh ${UNSIGNED} signature/osx
./detached-sig-apply.sh ${UNSIGNED_APP} signature/osx/dist
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "${OSX_VOLNAME}" -no-pad -r -dir-mode 0755 -apple -o uncompressed.dmg signed-app
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}

View File

@@ -142,8 +142,6 @@ script: |
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i}
cp contrib/macdeploy/detached-sig-create.sh unsigned-app-${i}
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
cp ${BASEPREFIX}/${i}/native/bin/${i}-codesign_allocate unsigned-app-${i}/codesign_allocate
cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff
mv dist unsigned-app-${i}
pushd unsigned-app-${i}
find . | sort | tar --mtime="$REFERENCE_DATETIME" --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz
@@ -161,6 +159,6 @@ script: |
done
mkdir -p ${OUTDIR}/src
git archive --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
git archive --prefix="${DISTNAME}/" --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx64.tar.gz

View File

@@ -8,6 +8,7 @@ architectures:
packages:
- "libssl-dev"
- "autoconf"
- "automake"
- "libtool"
- "pkg-config"
remotes:

View File

@@ -157,7 +157,7 @@ script: |
done
mkdir -p ${OUTDIR}/src
git archive --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
git archive --prefix="${DISTNAME}/" --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
cp -rf contrib/windeploy $BUILD_DIR
cd $BUILD_DIR/windeploy

View File

@@ -14,6 +14,10 @@ When complete, it will have produced `Bitcoin-Qt.dmg`.
## SDK Extraction
Our current macOS SDK (`macOSX10.14.sdk`) can be extracted from
[Xcode_10.2.1.xip](https://download.developer.apple.com/Developer_Tools/Xcode_10.2.1/Xcode_10.2.1.xip).
An Apple ID is needed to download this.
`Xcode.app` is packaged in a `.xip` archive.
This makes the SDK less-trivial to extract on non-macOS machines.
One approach (tested on Debian Buster) is outlined below:
@@ -38,14 +42,14 @@ xar -xf Xcode_10.2.1.xip -C .
./pbzx/pbzx -n Content | cpio -i
find Xcode.app -type d -name MacOSX.sdk -execdir sh -c 'tar -c MacOSX.sdk/ | gzip -9n > /MacOSX10.14.sdk.tar.gz' \;
find Xcode.app -type d -name MacOSX.sdk -exec sh -c 'tar --transform="s/MacOSX.sdk/MacOSX10.14.sdk/" -c -C$(dirname {}) MacOSX.sdk/ | gzip -9n > MacOSX10.14.sdk.tar.gz' \;
```
on macOS the process is more straightforward:
```bash
xip -x Xcode_10.2.1.xip
tar -C Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.14.sdk.tar.gz MacOSX.sdk
tar -s "/MacOSX.sdk/MacOSX10.14.sdk/" -C Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.14.sdk.tar.gz MacOSX.sdk
```
Our previously used macOS SDK (`MacOSX10.11.sdk`) can be extracted from

View File

@@ -8,10 +8,9 @@ set -e
UNSIGNED="$1"
SIGNATURE="$2"
ARCH=x86_64
ROOTDIR=dist
TEMPDIR=signed.temp
OUTDIR=signed-app
SIGNAPPLE=signapple
if [ -z "$UNSIGNED" ]; then
echo "usage: $0 <unsigned app> <signature>"
@@ -23,35 +22,6 @@ if [ -z "$SIGNATURE" ]; then
exit 1
fi
rm -rf ${TEMPDIR} && mkdir -p ${TEMPDIR}
tar -C ${TEMPDIR} -xf ${UNSIGNED}
cp -rf "${SIGNATURE}"/* ${TEMPDIR}
if [ -z "${PAGESTUFF}" ]; then
PAGESTUFF=${TEMPDIR}/pagestuff
fi
if [ -z "${CODESIGN_ALLOCATE}" ]; then
CODESIGN_ALLOCATE=${TEMPDIR}/codesign_allocate
fi
find ${TEMPDIR} -name "*.sign" | while read i; do
SIZE=$(stat -c %s "${i}")
TARGET_FILE="$(echo "${i}" | sed 's/\.sign$//')"
echo "Allocating space for the signature of size ${SIZE} in ${TARGET_FILE}"
${CODESIGN_ALLOCATE} -i "${TARGET_FILE}" -a ${ARCH} ${SIZE} -o "${i}.tmp"
OFFSET=$(${PAGESTUFF} "${i}.tmp" -p | tail -2 | grep offset | sed 's/[^0-9]*//g')
if [ -z ${QUIET} ]; then
echo "Attaching signature at offset ${OFFSET}"
fi
dd if="$i" of="${i}.tmp" bs=1 seek=${OFFSET} count=${SIZE} 2>/dev/null
mv "${i}.tmp" "${TARGET_FILE}"
rm "${i}"
echo "Success."
done
mv ${TEMPDIR}/${ROOTDIR} ${OUTDIR}
rm -rf ${TEMPDIR}
${SIGNAPPLE} apply ${UNSIGNED} ${SIGNATURE}
mv ${ROOTDIR} ${OUTDIR}
echo "Signed: ${OUTDIR}"

View File

@@ -8,44 +8,21 @@ set -e
ROOTDIR=dist
BUNDLE="${ROOTDIR}/Bitcoin-Qt.app"
CODESIGN=codesign
SIGNAPPLE=signapple
TEMPDIR=sign.temp
TEMPLIST=${TEMPDIR}/signatures.txt
OUT=signature-osx.tar.gz
OUTROOT=osx
OUTROOT=osx/dist
if [ -z "$1" ]; then
echo "usage: $0 <codesign args>"
echo "example: $0 -s MyIdentity"
echo "usage: $0 <signapple args>"
echo "example: $0 <path to key>"
exit 1
fi
rm -rf ${TEMPDIR} ${TEMPLIST}
rm -rf ${TEMPDIR}
mkdir -p ${TEMPDIR}
${CODESIGN} -f --file-list ${TEMPLIST} "$@" "${BUNDLE}"
grep -v CodeResources < "${TEMPLIST}" | while read i; do
TARGETFILE="${BUNDLE}/$(echo "${i}" | sed "s|.*${BUNDLE}/||")"
SIZE=$(pagestuff "$i" -p | tail -2 | grep size | sed 's/[^0-9]*//g')
OFFSET=$(pagestuff "$i" -p | tail -2 | grep offset | sed 's/[^0-9]*//g')
SIGNFILE="${TEMPDIR}/${OUTROOT}/${TARGETFILE}.sign"
DIRNAME="$(dirname "${SIGNFILE}")"
mkdir -p "${DIRNAME}"
echo "Adding detached signature for: ${TARGETFILE}. Size: ${SIZE}. Offset: ${OFFSET}"
dd if="$i" of="${SIGNFILE}" bs=1 skip=${OFFSET} count=${SIZE} 2>/dev/null
done
grep CodeResources < "${TEMPLIST}" | while read i; do
TARGETFILE="${BUNDLE}/$(echo "${i}" | sed "s|.*${BUNDLE}/||")"
RESOURCE="${TEMPDIR}/${OUTROOT}/${TARGETFILE}"
DIRNAME="$(dirname "${RESOURCE}")"
mkdir -p "${DIRNAME}"
echo "Adding resource for: \"${TARGETFILE}\""
cp "${i}" "${RESOURCE}"
done
rm ${TEMPLIST}
${SIGNAPPLE} sign -f --detach "${TEMPDIR}/${OUTROOT}" "$@" "${BUNDLE}"
tar -C "${TEMPDIR}" -czf "${OUT}" .
rm -rf "${TEMPDIR}"

View File

@@ -586,7 +586,8 @@ if len(config.fancy) == 1:
sys.exit(1)
try:
fancy = plistlib.readPlist(p)
with open(p, 'rb') as fp:
fancy = plistlib.load(fp, fmt=plistlib.FMT_XML)
except:
if verbose >= 1:
sys.stderr.write("Error: Could not parse fancy disk image plist at \"{}\"\n".format(p))

View File

@@ -16,7 +16,7 @@ from itertools import islice
from base58 import b58encode_chk, b58decode_chk, b58chars
import random
from binascii import b2a_hex
from segwit_addr import bech32_encode, decode, convertbits, CHARSET
from segwit_addr import bech32_encode, decode, convertbits, CHARSET, Encoding
# key types
PUBKEY_ADDRESS = 0
@@ -33,6 +33,7 @@ PRIVKEY_REGTEST = 239
OP_0 = 0x00
OP_1 = 0x51
OP_2 = 0x52
OP_3 = 0x53
OP_16 = 0x60
OP_DUP = 0x76
OP_EQUAL = 0x87
@@ -45,6 +46,7 @@ script_prefix = (OP_HASH160, 20)
script_suffix = (OP_EQUAL,)
p2wpkh_prefix = (OP_0, 20)
p2wsh_prefix = (OP_0, 32)
p2tr_prefix = (OP_1, 32)
metadata_keys = ['isPrivkey', 'chain', 'isCompressed', 'tryCaseFlip']
# templates for valid sequences
@@ -66,29 +68,39 @@ templates = [
]
# templates for valid bech32 sequences
bech32_templates = [
# hrp, version, witprog_size, metadata, output_prefix
('bc', 0, 20, (False, 'main', None, True), p2wpkh_prefix),
('bc', 0, 32, (False, 'main', None, True), p2wsh_prefix),
('bc', 1, 2, (False, 'main', None, True), (OP_1, 2)),
('tb', 0, 20, (False, 'test', None, True), p2wpkh_prefix),
('tb', 0, 32, (False, 'test', None, True), p2wsh_prefix),
('tb', 2, 16, (False, 'test', None, True), (OP_2, 16)),
('bcrt', 0, 20, (False, 'regtest', None, True), p2wpkh_prefix),
('bcrt', 0, 32, (False, 'regtest', None, True), p2wsh_prefix),
('bcrt', 16, 40, (False, 'regtest', None, True), (OP_16, 40))
# hrp, version, witprog_size, metadata, encoding, output_prefix
('bc', 0, 20, (False, 'main', None, True), Encoding.BECH32, p2wpkh_prefix),
('bc', 0, 32, (False, 'main', None, True), Encoding.BECH32, p2wsh_prefix),
('bc', 1, 32, (False, 'main', None, True), Encoding.BECH32M, p2tr_prefix),
('bc', 2, 2, (False, 'main', None, True), Encoding.BECH32M, (OP_2, 2)),
('tb', 0, 20, (False, 'test', None, True), Encoding.BECH32, p2wpkh_prefix),
('tb', 0, 32, (False, 'test', None, True), Encoding.BECH32, p2wsh_prefix),
('tb', 1, 32, (False, 'test', None, True), Encoding.BECH32M, p2tr_prefix),
('tb', 3, 16, (False, 'test', None, True), Encoding.BECH32M, (OP_3, 16)),
('bcrt', 0, 20, (False, 'regtest', None, True), Encoding.BECH32, p2wpkh_prefix),
('bcrt', 0, 32, (False, 'regtest', None, True), Encoding.BECH32, p2wsh_prefix),
('bcrt', 1, 32, (False, 'regtest', None, True), Encoding.BECH32M, p2tr_prefix),
('bcrt', 16, 40, (False, 'regtest', None, True), Encoding.BECH32M, (OP_16, 40))
]
# templates for invalid bech32 sequences
bech32_ng_templates = [
# hrp, version, witprog_size, invalid_bech32, invalid_checksum, invalid_char
('tc', 0, 20, False, False, False),
('tb', 17, 32, False, False, False),
('bcrt', 3, 1, False, False, False),
('bc', 15, 41, False, False, False),
('tb', 0, 16, False, False, False),
('bcrt', 0, 32, True, False, False),
('bc', 0, 16, True, False, False),
('tb', 0, 32, False, True, False),
('bcrt', 0, 20, False, False, True)
# hrp, version, witprog_size, encoding, invalid_bech32, invalid_checksum, invalid_char
('tc', 0, 20, Encoding.BECH32, False, False, False),
('bt', 1, 32, Encoding.BECH32M, False, False, False),
('tb', 17, 32, Encoding.BECH32M, False, False, False),
('bcrt', 3, 1, Encoding.BECH32M, False, False, False),
('bc', 15, 41, Encoding.BECH32M, False, False, False),
('tb', 0, 16, Encoding.BECH32, False, False, False),
('bcrt', 0, 32, Encoding.BECH32, True, False, False),
('bc', 0, 16, Encoding.BECH32, True, False, False),
('tb', 0, 32, Encoding.BECH32, False, True, False),
('bcrt', 0, 20, Encoding.BECH32, False, False, True),
('bc', 0, 20, Encoding.BECH32M, False, False, False),
('tb', 0, 32, Encoding.BECH32M, False, False, False),
('bcrt', 0, 20, Encoding.BECH32M, False, False, False),
('bc', 1, 32, Encoding.BECH32, False, False, False),
('tb', 2, 16, Encoding.BECH32, False, False, False),
('bcrt', 16, 20, Encoding.BECH32, False, False, False),
]
def is_valid(v):
@@ -128,8 +140,9 @@ def gen_valid_bech32_vector(template):
hrp = template[0]
witver = template[1]
witprog = bytearray(os.urandom(template[2]))
dst_prefix = bytearray(template[4])
rv = bech32_encode(hrp, [witver] + convertbits(witprog, 8, 5))
encoding = template[4]
dst_prefix = bytearray(template[5])
rv = bech32_encode(encoding, hrp, [witver] + convertbits(witprog, 8, 5))
return rv, dst_prefix + witprog
def gen_valid_vectors():
@@ -189,22 +202,23 @@ def gen_invalid_bech32_vector(template):
hrp = template[0]
witver = template[1]
witprog = bytearray(os.urandom(template[2]))
encoding = template[3]
if no_data:
rv = bech32_encode(hrp, [])
rv = bech32_encode(encoding, hrp, [])
else:
data = [witver] + convertbits(witprog, 8, 5)
if template[3] and not no_data:
if template[4] and not no_data:
if template[2] % 5 in {2, 4}:
data[-1] |= 1
else:
data.append(0)
rv = bech32_encode(hrp, data)
rv = bech32_encode(encoding, hrp, data)
if template[4]:
if template[5]:
i = len(rv) - random.randrange(1, 7)
rv = rv[:i] + random.choice(CHARSET.replace(rv[i], '')) + rv[i + 1:]
if template[5]:
if template[6]:
i = len(hrp) + 1 + random.randrange(0, len(rv) - len(hrp) - 4)
rv = rv[:i] + rv[i:i + 4].upper() + rv[i + 4:]

View File

@@ -1,100 +1,89 @@
-----BEGIN CERTIFICATE-----
MIIFdDCCBFygAwIBAgIRAL98pqZb/N9LuNaNxKsHNGQwDQYJKoZIhvcNAQELBQAw
fDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQD
ExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMjAwMzI0MDAwMDAwWhcN
MjEwMzI0MjM1OTU5WjCBtzELMAkGA1UEBhMCQ0gxDTALBgNVBBEMBDgwMDUxDjAM
BgNVBAgMBVN0YXRlMRAwDgYDVQQHDAdaw7xyaWNoMRcwFQYDVQQJDA5NYXR0ZW5n
YXNzZSAyNzEuMCwGA1UECgwlQml0Y29pbiBDb3JlIENvZGUgU2lnbmluZyBBc3Nv
Y2lhdGlvbjEuMCwGA1UEAwwlQml0Y29pbiBDb3JlIENvZGUgU2lnbmluZyBBc3Nv
Y2lhdGlvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtxC8N4r/jE
OGOdFy/0UtiUvEczPZf9WYZz/7paAkc75XopHIE5/ssmoEX27gG9K00tf3Q62QAx
inZUPWkNTh8X0l+6uSGiIBFIV7dDgztIxnPcxaqw0k7Q2TEqKJvb5qm16zX6WfXJ
R2r6O5utUdQ3AarHnQq9fwdM1j5+ywS5u52te74ENgDMTMKUuB2J3KH1ASg5PAtO
CjPqPL+ZXJ7eT3M0Z+Lbu5ISZSqZB48BcCwOo/fOO0dAiLT9FE1iVtaCpBKHqGmd
glRjPzZdgDv8g28etRmk8wQ5pQmfL2gBjt/LtIgMPTdHHETKLxJO5H3y0CNx1vzL
ql7xNMxELxkCAwEAAaOCAbMwggGvMB8GA1UdIwQYMBaAFA7hOqhTOjHVir7Bu61n
GgOFrTQOMB0GA1UdDgQWBBSHBbl82FUJiUkXyyYJog1awYRsxjAOBgNVHQ8BAf8E
BAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgB
hvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEF
BQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDwwOjA4oDagNIYy
aHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5j
cmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3Rp
Z28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYX
aHR0cDovL29jc3Auc2VjdGlnby5jb20wKwYDVR0RBCQwIoEgam9uYXNAYml0Y29p
bmNvcmVjb2Rlc2lnbmluZy5vcmcwDQYJKoZIhvcNAQELBQADggEBAAU59qJzQ2ED
aTMIQTsU01zIhZJ/xwQh78i0v2Mnr46RvzYrZOev+btF3SyUYD8veNnbYlY6yEYq
Vb+/PQnE3t1xlqR80qiTZCk/Wmxx/qKvQuWeRL5QQgvsCmWBpycQ7PNfwzOWxbPE
b0Hb2/VFFZfR9iltkfeInRUrzS96CJGYtm7dMf2JtnXYBcwpn1N8BSMH4nXVyN8g
VEE5KyjE7+/awYiSST7+e6Y7FE5AJ4f3FjqnRm+2XetTVqITwMLKZMoV283nSEeH
fA4FNAMGz9QeV38ol65NNqFP2vSSgVoPK79orqH9OOW2LSobt2qun+euddJIQeYV
CMP90b/2WPc=
MIIGQzCCBSugAwIBAgIQBSN7Cm16Z0UT9p7lA2jiKDANBgkqhkiG9w0BAQsFADBy
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
SUQgQ29kZSBTaWduaW5nIENBMB4XDTIxMDUyMTAwMDAwMFoXDTIyMDUyNjIzNTk1
OVowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhEZWxhd2FyZTEOMAwGA1UEBxMF
TGV3ZXMxJjAkBgNVBAoTHUJpdGNvaW4gQ29yZSBDb2RlIFNpZ25pbmcgTExDMSYw
JAYDVQQDEx1CaXRjb2luIENvcmUgQ29kZSBTaWduaW5nIExMQzCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBAKe6xtFgKAQ68MvxwCjNtpgPobfDQCLKvCAN
uBKGYuub6ufQB5dhCLN9fjMgfg33AyauvU3PcEUDUWD3/k925bPqgxHC3E7YqoB+
11b/2Y7a86okqUgcGgvKhaKoHmXxElpM9EjQHjJ0yL4QAR1Lp+9CMMW3wIulBYKt
wLIArFvbuQhMO/6rxL8frpK049v//WfQzB16GXuFnzN/6fDK7oOt5IrKTg4H6EY2
fj4+QaUj0lNX7aHnZ6Ki45h2RUPDgN1ipRIuhM67npyZ/tdzPPjI3PUgfXCccN6D
+qWWnbbbvPuOht4ziPciVnPd57PqJmAOnLI86gisDfd7VKlcpOSEaagdUGvMbU6f
uAps818GwnJzwCGllxlKASCgXDAckLLvMuit4RfYAhhdhw5R0AsaWK0HW88oHOqi
U7eWlMCbSGk34x9hBrxYl7tvcNcLPWIPYrrhFWNFpkV8bVVIoV5rUNRgWvBcdOq1
CCPTfsJp3nEH2WCoBghZquDZLSW12wMw2UsQyEojBeGhrR1inn8uK93wSnVCC8F4
21yWNRMNe/LQVhmZDgFOen9r/WijBsBdQw1bL8N4zGdYv8+soqkrWzW417FfSx81
pj4j5FEXYXXV5k/4/eBpIARXVRR8xya0nGkhNJmBk0jjDGD8fPW2gFQbqnUwAQ34
vOr8NUqHAgMBAAGjggHEMIIBwDAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32
ZXUOWDAdBgNVHQ4EFgQUVSLtZnifEHvd8z3E7AyLYNuDiaMwDgYDVR0PAQH/BAQD
AgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Ax
hi9odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNy
bDBLBgNVHSAERDBCMDYGCWCGSAGG/WwDATApMCcGCCsGAQUFBwIBFhtodHRwOi8v
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
BQADggEBAOaJneI91NJgqghUxgc0AWQ01SAJTgN4z7xMQ3W0ZAtwGbA0byT7YRlj
j7h+j+hMX/JYkRJETTh8Nalq2tPWJBiMMEPOGFVttFER1pwouHkK9pSKyp4xRvNU
L0LPh7fE4EYMJoynys6ZTpMCHLku+X3jFat1+1moh9TJRvK5+ETZYGl0seFNU3mJ
dZzusObm4scffIGgi40kmmISKd5ZRuooRTu9FFR/3vpfbA+7Vg4RSH3CcQPo9bfk
+h/qRQhSfQInTBn7obRpIlvEcK782qivqseJGdtnTmcdVRShD5ckTVza1yv25uQz
l/yTqmG2LXlYjl5iMSdF0C1xYq6IsOA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
jjxDah2nGN59PRbxYvnKkKj9
MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF9TCCA92gAwIBAgIQHaJIMG+bJhjQguCWfTPTajANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjB8MQswCQYDVQQGEwJHQjEbMBkGA1UE
CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQK
Ew9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2ln
bmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIYijTKFehif
SfCWL2MIHi3cfJ8Uz+MmtiVmKUCGVEZ0MWLFEO2yhyemmcuVMMBW9aR1xqkOUGKl
UZEQauBLYq798PgYrKf/7i4zIPoMGYmobHutAMNhodxpZW0fbieW15dRhqb0J+V8
aouVHltg1X7XFpKcAC9o95ftanK+ODtj3o+/bkxBXRIgCFnoOc2P0tbPBrRXBbZO
oT5Xax+YvMRi1hsLjcdmG0qfnYHEckC14l/vC0X/o84Xpi1VsLewvFRqnbyNVlPG
8Lp5UEks9wO5/i9lNfIi6iwHr0bZ+UYc3Ix8cSjz/qfGFN1VkW6KEQ3fBiSVfQ+n
oXw62oY1YdMCAwEAAaOCAWQwggFgMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvA
nfKyA2bLMB0GA1UdDgQWBBQO4TqoUzox1Yq+wbutZxoDha00DjAOBgNVHQ8BAf8E
BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAwYI
KwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0
dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9u
QXV0aG9yaXR5LmNybDB2BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6
Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAl
BggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0B
AQwFAAOCAgEATWNQ7Uc0SmGk295qKoyb8QAAHh1iezrXMsL2s+Bjs/thAIiaG20Q
BwRPvrjqiXgi6w9G7PNGXkBGiRL0C3danCpBOvzW9Ovn9xWVM8Ohgyi33i/klPeF
M4MtSkBIv5rCT0qxjyT0s4E307dksKYjalloUkJf/wTr4XRleQj1qZPea3FAmZa6
ePG5yOLDCBaxq2NayBWAbXReSnV+pbjDbLXP30p5h1zHQE1jNfYw08+1Cg4LBH+g
S667o6XQhACTPlNdNKUANWlsvp8gJRANGftQkGG+OY96jk32nw4e/gdREmaDJhlI
lc5KycF/8zoFm/lv34h/wCOe0h5DekUxwZxNqfBZslkZ6GqNKQQCd3xLS81wvjqy
VVp4Pry7bwMQJXcVNIr5NsxDkuS6T/FikyglVyn7URnHoSVAaoRXxrKdsbwcCtp8
Z359LukoTBh+xHsxQXGaSynsCz1XUNLK3f2eBVHlRHjdAd6xdZgNVCT98E7j4viD
vXK6yz067vBeF5Jobchh+abxKgoLpbn0nu6YMgWFnuv5gynTxix9vTp3Los3QqBq
gu07SqqUEKThDfgXxbZaeTMYkuO1dfih6Y4KJR7kHvGfWocj/5+kUZ77OYARzdu1
xKeogG/lU9Tg46LC0lsa+jImLWpXcBw8pFguo/NbSwfcMlnzh6cabVg=
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
-----END CERTIFICATE-----

View File

@@ -9,6 +9,7 @@ define $(package)_set_vars
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication --enable-option-checking
$(package)_config_opts_mingw32=--enable-mingw
$(package)_config_opts_linux=--with-pic
$(package)_cflags+=-Wno-error=implicit-function-declaration
$(package)_cxxflags=-std=c++11
$(package)_cppflags_mingw32=-DUNICODE -D_UNICODE
endef

View File

@@ -10,6 +10,7 @@ $(package)_build_subdir=qtbase
$(package)_qt_libs=corelib network widgets gui plugins testlib
$(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch fix_no_printer.patch fix_rcc_determinism.patch fix_riscv64_arch.patch xkb-default.patch no-xlib.patch fix_android_qmake_conf.patch fix_android_jni_static.patch
# Update OSX_QT_TRANSLATIONS when this is updated
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
$(package)_qttranslations_sha256_hash=fb5a47799754af73d3bf501fe513342cfe2fc37f64e80df5533f6110e804220c
@@ -79,7 +80,6 @@ $(package)_config_opts += -no-feature-colordialog
$(package)_config_opts += -no-feature-commandlineparser
$(package)_config_opts += -no-feature-concurrent
$(package)_config_opts += -no-feature-dial
$(package)_config_opts += -no-feature-filesystemwatcher
$(package)_config_opts += -no-feature-fontcombobox
$(package)_config_opts += -no-feature-ftp
$(package)_config_opts += -no-feature-http

View File

@@ -1,4 +1,4 @@
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.19.0**):
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.20.2**):
* [`BIP 9`](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/bitcoin/bitcoin/pull/7575))
* [`BIP 11`](https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)).
@@ -42,3 +42,4 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.19.0**):
* [`BIP 173`](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki): Bech32 addresses for native Segregated Witness outputs are supported as of **v0.16.0** ([PR 11167](https://github.com/bitcoin/bitcoin/pull/11167)). Bech32 addresses are generated by default as of **v0.20.0** ([PR 16884](https://github.com/bitcoin/bitcoin/pull/16884)).
* [`BIP 174`](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki): RPCs to operate on Partially Signed Bitcoin Transactions (PSBT) are present as of **v0.17.0** ([PR 13557](https://github.com/bitcoin/bitcoin/pull/13557)).
* [`BIP 176`](https://github.com/bitcoin/bips/blob/master/bip-0176.mediawiki): Bits Denomination [QT only] is supported as of **v0.16.0** ([PR 12035](https://github.com/bitcoin/bitcoin/pull/12035)).
* [`BIP 350`](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki): Addresses for native v1+ segregated Witness outputs use Bech32m instead of Bech32 as of **v0.20.2** ([PR 20861](https://github.com/bitcoin/bitcoin/pull/20861)).

View File

@@ -6,14 +6,14 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) |
| --- | --- | --- | --- | --- | --- |
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
| Boost | [1.70.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | |
| Boost | [1.70.0](https://www.boost.org/users/download/) | [1.48.0](https://github.com/bitcoin/bitcoin/pull/20142) | No | | |
| Clang | | [3.3+](https://releases.llvm.org/download.html) (C++11 support) | | | |
| Expat | [2.2.7](https://libexpat.github.io/) | | No | Yes | |
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Android only) |
| GCC | | [4.8+](https://gcc.gnu.org/) (C++11 support) | | | |
| HarfBuzz-NG | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| libevent | [2.1.11-stable](https://github.com/libevent/libevent/releases) | 2.0.22 | No | | |
| libevent | [2.1.11-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No | | |
| libpng | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| librsvg | | | | | |
| MiniUPnPc | [2.0.20180203](https://miniupnp.tuxfamily.org/files) | | No | | |

View File

@@ -91,7 +91,7 @@ Descriptors consist of several types of expressions. The top level expression is
`ADDR` expressions are any type of supported address:
- P2PKH addresses (base58, of the form `1...` for mainnet or `[nm]...` for testnet). Note that P2PKH addresses in descriptors cannot be used for P2PK outputs (use the `pk` function instead).
- P2SH addresses (base58, of the form `3...` for mainnet or `2...` for testnet, defined in [BIP 13](https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki)).
- Segwit addresses (bech32, of the form `bc1...` for mainnet or `tb1...` for testnet, defined in [BIP 173](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki)).
- Segwit addresses (bech32 and bech32m, of the form `bc1...` for mainnet or `tb1...` for testnet, defined in [BIP 173](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki) and [BIP 350](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki)).
## Explanation

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-CLI "1" "February 2019" "bitcoin-cli v0.17.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH BITCOIN-CLI "1" "December 2020" "bitcoin-cli v0.20.2.0" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli v0.17.99.0
bitcoin-cli \- manual page for bitcoin-cli v0.20.2.0
.SH SYNOPSIS
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v0.17.99.0
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
.SH DESCRIPTION
Bitcoin Core RPC client version v0.17.99.0
Bitcoin Core RPC client version v0.20.2.0
.SH OPTIONS
.HP
\-?
@@ -92,22 +92,37 @@ is used for the RPC password.
.IP
Read RPC password from standard input as a single line. When combined
with \fB\-stdin\fR, the first line from standard input is used for the
RPC password.
RPC password. When combined with \fB\-stdinwalletpassphrase\fR,
\fB\-stdinrpcpass\fR consumes the first line, and \fB\-stdinwalletpassphrase\fR
consumes the second.
.HP
\fB\-stdinwalletpassphrase\fR
.IP
Read wallet passphrase from standard input as a single line. When
combined with \fB\-stdin\fR, the first line from standard input is used
for the wallet passphrase.
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
regtest
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-QT "1" "February 2019" "bitcoin-qt v0.17.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH BITCOIN-QT "1" "December 2020" "bitcoin-qt v0.20.2.0" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt v0.17.99.0
bitcoin-qt \- manual page for bitcoin-qt v0.20.2.0
.SH SYNOPSIS
.B bitcoin-qt
[\fI\,command-line options\/\fR]
.SH DESCRIPTION
Bitcoin Core version v0.17.99.0 (64\-bit)
Bitcoin Core version v0.20.2.0
.SH OPTIONS
.HP
\-?
@@ -23,9 +23,15 @@ long fork (%s in cmd is replaced by message)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
0000000000000000000f2adce67e49b0b6bdeb9de8b7c3d7e93b21e7fc1e819d,
testnet:
0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
000000000000056c49030c174179b52a928c870e6e8a822c75973b7970cfbd01)
.HP
\fB\-blockfilterindex=\fR<type>
.IP
Maintain an index of compact filters by block (default: 0, values:
basic). If <type> is not supplied or if <type> = 1, indexes for
all known types are enabled.
.HP
\fB\-blocknotify=\fR<cmd>
.IP
@@ -39,7 +45,16 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-blocksdir=\fR<dir>
.IP
Specify blocks directory (default: <datadir>/blocks)
Specify directory to hold blocks subdirectory for *.dat files (default:
<datadir>)
.HP
\fB\-blocksonly\fR
.IP
Whether to reject transactions from network peers. Automatic broadcast
and rebroadcast of any transactions from inbound peers is
disabled, unless '\-whitelistforcerelay' is '1', in which case
whitelisted peers' transactions will be relayed. RPC transactions
are not affected. (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
@@ -56,7 +71,9 @@ Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
Set database cache size in MiB (4 to 16384, default: 450)
Maximum database cache size <n> MiB (4 to 16384, default: 450). In
addition, unused mempool memory is shared for this cache (see
\fB\-maxmempool\fR).
.HP
\fB\-debuglogfile=\fR<file>
.IP
@@ -71,7 +88,7 @@ Specify additional configuration file, relative to the \fB\-datadir\fR path
.HP
\fB\-loadblock=\fR<file>
.IP
Imports blocks from external blk000??.dat file on startup
Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
@@ -88,7 +105,7 @@ Do not keep transactions in the mempool longer than <n> hours (default:
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
@@ -144,13 +161,20 @@ Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info). This option can be
specified multiple times to add multiple nodes.
.HP
\fB\-asmap=\fR<file>
.IP
Specify asn mapping used for bucketing of the peers (default:
ip_asn.map). Relative paths will be prefixed by the net\-specific
datadir location.
.HP
\fB\-banscore=\fR<n>
.IP
Threshold for disconnecting misbehaving peers (default: 100)
Threshold for disconnecting and discouraging misbehaving peers (default:
100)
.HP
\fB\-bantime=\fR<n>
.IP
Number of seconds to keep misbehaving peers from reconnecting (default:
Default duration (in seconds) of manually configured bans (default:
86400)
.HP
\fB\-bind=\fR<addr>
@@ -233,7 +257,7 @@ networks.
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
1)
0)
.HP
\fB\-permitbaremultisig\fR
.IP
@@ -277,25 +301,30 @@ Tor control port password (default: empty)
.IP
Use UPnP to map the listening port (default: 0)
.HP
\fB\-whitebind=\fR<addr>
\fB\-whitebind=\fR<[permissions@]addr>
.IP
Bind to given address and whitelist peers connecting to it. Use
[host]:port notation for IPv6
[host]:port notation for IPv6. Allowed permissions are
bloomfilter (allow requesting BIP37 filtered blocks and
transactions), noban (do not ban for misbehavior), forcerelay
(relay transactions that are already in the mempool; implies
relay), relay (relay even in \fB\-blocksonly\fR mode), and mempool
(allow requesting BIP35 mempool contents). Specify multiple
permissions separated by commas (default: noban,mempool,relay).
Can be specified multiple times.
.HP
\fB\-whitelist=\fR<IP address or network>
\fB\-whitelist=\fR<[permissions@]IP address or network>
.IP
Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
times. Whitelisted peers cannot be DoS banned and their
transactions are always relayed, even if they are already in the
mempool, useful e.g. for a gateway
CIDR notated network(e.g. 1.2.3.0/24). Uses same permissions as
\fB\-whitebind\fR. Can be specified multiple times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
@@ -303,7 +332,8 @@ Group outputs by address, selecting all or none, instead of selecting on
a per\-output basis. Privacy is improved as an address is only
used once (unless someone sends to it after spending from it),
but may result in slightly higher fees as suboptimal coin
selection may result due to the added limitation (default: 0)
selection may result due to the added limitation (default: 0
(always enabled for wallets with "avoid_reuse" enabled))
.HP
\fB\-changetype\fR
.IP
@@ -327,11 +357,15 @@ limited by the fee estimate for the longest target
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kB) that will be used when fee estimation has
insufficient data (default: 0.0002)
insufficient data. 0 to entirely disable the fallbackfee feature.
(default: 0.00)
.HP
\fB\-keypool=\fR<n>
.IP
Set key pool size to <n> (default: 1000)
Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
increase the risk of losing funds when restoring from an old
backup, if none of the addresses in the original keypool have
been used.
.HP
\fB\-mintxfee=\fR<amt>
.IP
@@ -383,8 +417,11 @@ exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
by TxID)
Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID and %w is replaced by wallet name. %w is not currently
implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used
to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
@@ -402,17 +439,35 @@ ZeroMQ notification options:
.IP
Enable publish hash block in <address>
.HP
\fB\-zmqpubhashblockhwm=\fR<n>
.IP
Set publish hash block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
\fB\-zmqpubhashtxhwm=\fR<n>
.IP
Set publish hash transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
\fB\-zmqpubrawblockhwm=\fR<n>
.IP
Set publish raw block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
.HP
\fB\-zmqpubrawtxhwm=\fR<n>
.IP
Set publish raw transaction outbound message high water mark (default:
1000)
.PP
Debugging/Testing options:
.HP
@@ -421,9 +476,9 @@ Debugging/Testing options:
Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
optional). If <category> is not supplied or if <category> = 1,
output all debugging information. <category> can be: net, tor,
mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
mempool, http, bench, zmq, walletdb, rpc, estimatefee, addrman,
selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
libevent, coindb, qt, leveldb.
libevent, coindb, qt, leveldb, validation.
.HP
\fB\-debugexclude=\fR<category>
.IP
@@ -439,15 +494,19 @@ Print help message with debugging options and exit
.IP
Include IP addresses in debug output (default: 0)
.HP
\fB\-logthreadnames\fR
.IP
Prepend debug output with name of the originating thread (only available
on platforms supporting thread_local) (default: 0)
.HP
\fB\-logtimestamps\fR
.IP
Prepend debug output with timestamp (default: 1)
.HP
\fB\-maxtxfee=\fR<amt>
.IP
Maximum total fees (in BTC) to use in a single wallet transaction or raw
transaction; setting this too low may abort large transactions
(default: 0.10)
Maximum total fees (in BTC) to use in a single wallet transaction;
setting this too low may abort large transactions (default: 0.10)
.HP
\fB\-printtoconsole\fR
.IP
@@ -464,9 +523,14 @@ Append comment to the user agent string
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
regtest
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
@@ -484,7 +548,6 @@ Relay and mine data carrier transactions (default: 1)
Maximum size of data in data carrier transactions we relay and mine
(default: 83)
.HP
.HP
\fB\-minrelaytxfee=\fR<amt>
.IP
Fees (in BTC/kB) smaller than this are considered zero fee for relaying,
@@ -492,13 +555,15 @@ mining and transaction creation (default: 0.00001)
.HP
\fB\-whitelistforcerelay\fR
.IP
Force relay of transactions from whitelisted peers even if they violate
local relay policy (default: 0)
Add 'forcerelay' permission to whitelisted inbound peers with default
permissions. This will relay transactions even if the
transactions were already in the mempool. (default: 0)
.HP
\fB\-whitelistrelay\fR
.IP
Accept relayed transactions received from whitelisted peers even when
not relaying transactions (default: 1)
Add 'relay' permission to whitelisted inbound peers with default
permissions. This will accept relayed transactions even when not
relaying transactions (default: 1)
.PP
Block creation options:
.HP
@@ -569,6 +634,23 @@ Set the number of threads to service RPC calls (default: 4)
.IP
Username for JSON\-RPC connections
.HP
\fB\-rpcwhitelist=\fR<whitelist>
.IP
Set a whitelist to filter incoming RPC calls for a specific user. The
field <whitelist> comes in the format: <USERNAME>:<rpc 1>,<rpc
2>,...,<rpc n>. If multiple whitelists are set for a given user,
they are set\-intersected. See \fB\-rpcwhitelistdefault\fR documentation
for information on default whitelist behavior.
.HP
\fB\-rpcwhitelistdefault\fR
.IP
Sets default behavior for rpc whitelisting. Unless rpcwhitelistdefault
is set to 0, if any \fB\-rpcwhitelist\fR is set, the rpc server acts as
if all rpc users are subject to empty\-unless\-otherwise\-specified
whitelists. If rpcwhitelistdefault is set to 1 and no
\fB\-rpcwhitelist\fR is set, rpc server acts as if all rpc users are
subject to empty whitelists.
.HP
\fB\-server\fR
.IP
Accept command line and JSON\-RPC commands
@@ -591,18 +673,14 @@ Start minimized
.IP
Reset all settings changed in the GUI
.HP
\fB\-rootcertificates=\fR<file>
.IP
Set SSL root certificates for payment request (default: \fB\-system\-\fR)
.HP
\fB\-splash\fR
.IP
Show splash screen on startup (default: 1)
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-TX "1" "February 2019" "bitcoin-tx v0.17.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH BITCOIN-TX "1" "December 2020" "bitcoin-tx v0.20.2.0" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx v0.17.99.0
bitcoin-tx \- manual page for bitcoin-tx v0.20.2.0
.SH SYNOPSIS
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR
@@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v0.17.99.0
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded bitcoin transaction\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-tx utility version v0.17.99.0
Bitcoin Core bitcoin\-tx utility version v0.20.2.0
.SH OPTIONS
.HP
\-?
@@ -28,11 +28,18 @@ Select JSON output
.IP
Output only the hex\-encoded transaction id of the resultant transaction.
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
regtest
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
@@ -105,10 +112,10 @@ set=NAME:JSON\-STRING
.IP
Set register NAME to given JSON\-STRING
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIN-WALLET "1" "February 2019" "bitcoin-wallet v0.17.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH BITCOIN-WALLET "1" "December 2020" "bitcoin-wallet v0.20.2.0" "User Commands"
.SH NAME
bitcoin-wallet \- manual page for bitcoin-wallet v0.17.99.0
bitcoin-wallet \- manual page for bitcoin-wallet v0.20.2.0
.SH DESCRIPTION
Bitcoin Core bitcoin\-wallet version v0.17.99.0
Bitcoin Core bitcoin\-wallet version v0.20.2.0
.PP
wallet\-tool is an offline tool for creating and interacting with Bitcoin Core wallet files.
By default wallet\-tool will act on wallets in the default mainnet wallet directory in the datadir.
bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
By default bitcoin\-wallet will act on wallets in the default mainnet wallet directory in the datadir.
To change the target wallet, use the \fB\-datadir\fR, \fB\-wallet\fR and \fB\-testnet\fR/\-regtest arguments.
.SS "Usage:"
.IP
@@ -34,13 +34,18 @@ Output debugging information (default: 0).
\fB\-printtoconsole\fR
.IP
Send trace/debug info to console (default: 1 when no \fB\-debug\fR is true, 0
otherwise.
otherwise).
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
regtest
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
@@ -52,10 +57,10 @@ info
.IP
Get wallet info
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH BITCOIND "1" "February 2019" "bitcoind v0.17.99.0" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH BITCOIND "1" "December 2020" "bitcoind v0.20.2.0" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v0.17.99.0
bitcoind \- manual page for bitcoind v0.20.2.0
.SH SYNOPSIS
.B bitcoind
[\fI\,options\/\fR] \fI\,Start Bitcoin Core Daemon\/\fR
[\fI\,options\/\fR] \fI\,Start Bitcoin Core\/\fR
.SH DESCRIPTION
Bitcoin Core Daemon version v0.17.99.0
Bitcoin Core version v0.20.2.0
.SH OPTIONS
.HP
\-?
@@ -23,9 +23,15 @@ long fork (%s in cmd is replaced by message)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
0000000000000000000f2adce67e49b0b6bdeb9de8b7c3d7e93b21e7fc1e819d,
testnet:
0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
000000000000056c49030c174179b52a928c870e6e8a822c75973b7970cfbd01)
.HP
\fB\-blockfilterindex=\fR<type>
.IP
Maintain an index of compact filters by block (default: 0, values:
basic). If <type> is not supplied or if <type> = 1, indexes for
all known types are enabled.
.HP
\fB\-blocknotify=\fR<cmd>
.IP
@@ -39,7 +45,16 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-blocksdir=\fR<dir>
.IP
Specify blocks directory (default: <datadir>/blocks)
Specify directory to hold blocks subdirectory for *.dat files (default:
<datadir>)
.HP
\fB\-blocksonly\fR
.IP
Whether to reject transactions from network peers. Automatic broadcast
and rebroadcast of any transactions from inbound peers is
disabled, unless '\-whitelistforcerelay' is '1', in which case
whitelisted peers' transactions will be relayed. RPC transactions
are not affected. (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
@@ -56,7 +71,9 @@ Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
Set database cache size in MiB (4 to 16384, default: 450)
Maximum database cache size <n> MiB (4 to 16384, default: 450). In
addition, unused mempool memory is shared for this cache (see
\fB\-maxmempool\fR).
.HP
\fB\-debuglogfile=\fR<file>
.IP
@@ -71,7 +88,7 @@ Specify additional configuration file, relative to the \fB\-datadir\fR path
.HP
\fB\-loadblock=\fR<file>
.IP
Imports blocks from external blk000??.dat file on startup
Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
@@ -88,7 +105,7 @@ Do not keep transactions in the mempool longer than <n> hours (default:
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
@@ -144,13 +161,20 @@ Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info). This option can be
specified multiple times to add multiple nodes.
.HP
\fB\-asmap=\fR<file>
.IP
Specify asn mapping used for bucketing of the peers (default:
ip_asn.map). Relative paths will be prefixed by the net\-specific
datadir location.
.HP
\fB\-banscore=\fR<n>
.IP
Threshold for disconnecting misbehaving peers (default: 100)
Threshold for disconnecting and discouraging misbehaving peers (default:
100)
.HP
\fB\-bantime=\fR<n>
.IP
Number of seconds to keep misbehaving peers from reconnecting (default:
Default duration (in seconds) of manually configured bans (default:
86400)
.HP
\fB\-bind=\fR<addr>
@@ -233,7 +257,7 @@ networks.
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
1)
0)
.HP
\fB\-permitbaremultisig\fR
.IP
@@ -277,25 +301,30 @@ Tor control port password (default: empty)
.IP
Use UPnP to map the listening port (default: 0)
.HP
\fB\-whitebind=\fR<addr>
\fB\-whitebind=\fR<[permissions@]addr>
.IP
Bind to given address and whitelist peers connecting to it. Use
[host]:port notation for IPv6
[host]:port notation for IPv6. Allowed permissions are
bloomfilter (allow requesting BIP37 filtered blocks and
transactions), noban (do not ban for misbehavior), forcerelay
(relay transactions that are already in the mempool; implies
relay), relay (relay even in \fB\-blocksonly\fR mode), and mempool
(allow requesting BIP35 mempool contents). Specify multiple
permissions separated by commas (default: noban,mempool,relay).
Can be specified multiple times.
.HP
\fB\-whitelist=\fR<IP address or network>
\fB\-whitelist=\fR<[permissions@]IP address or network>
.IP
Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
times. Whitelisted peers cannot be DoS banned and their
transactions are always relayed, even if they are already in the
mempool, useful e.g. for a gateway
CIDR notated network(e.g. 1.2.3.0/24). Uses same permissions as
\fB\-whitebind\fR. Can be specified multiple times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
@@ -303,7 +332,8 @@ Group outputs by address, selecting all or none, instead of selecting on
a per\-output basis. Privacy is improved as an address is only
used once (unless someone sends to it after spending from it),
but may result in slightly higher fees as suboptimal coin
selection may result due to the added limitation (default: 0)
selection may result due to the added limitation (default: 0
(always enabled for wallets with "avoid_reuse" enabled))
.HP
\fB\-changetype\fR
.IP
@@ -327,11 +357,15 @@ limited by the fee estimate for the longest target
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kB) that will be used when fee estimation has
insufficient data (default: 0.0002)
insufficient data. 0 to entirely disable the fallbackfee feature.
(default: 0.00)
.HP
\fB\-keypool=\fR<n>
.IP
Set key pool size to <n> (default: 1000)
Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
increase the risk of losing funds when restoring from an old
backup, if none of the addresses in the original keypool have
been used.
.HP
\fB\-mintxfee=\fR<amt>
.IP
@@ -383,8 +417,11 @@ exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
by TxID)
Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID and %w is replaced by wallet name. %w is not currently
implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used
to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
@@ -402,17 +439,35 @@ ZeroMQ notification options:
.IP
Enable publish hash block in <address>
.HP
\fB\-zmqpubhashblockhwm=\fR<n>
.IP
Set publish hash block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
\fB\-zmqpubhashtxhwm=\fR<n>
.IP
Set publish hash transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
\fB\-zmqpubrawblockhwm=\fR<n>
.IP
Set publish raw block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
.HP
\fB\-zmqpubrawtxhwm=\fR<n>
.IP
Set publish raw transaction outbound message high water mark (default:
1000)
.PP
Debugging/Testing options:
.HP
@@ -421,9 +476,9 @@ Debugging/Testing options:
Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
optional). If <category> is not supplied or if <category> = 1,
output all debugging information. <category> can be: net, tor,
mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
mempool, http, bench, zmq, walletdb, rpc, estimatefee, addrman,
selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
libevent, coindb, qt, leveldb.
libevent, coindb, qt, leveldb, validation.
.HP
\fB\-debugexclude=\fR<category>
.IP
@@ -439,15 +494,19 @@ Print help message with debugging options and exit
.IP
Include IP addresses in debug output (default: 0)
.HP
\fB\-logthreadnames\fR
.IP
Prepend debug output with name of the originating thread (only available
on platforms supporting thread_local) (default: 0)
.HP
\fB\-logtimestamps\fR
.IP
Prepend debug output with timestamp (default: 1)
.HP
\fB\-maxtxfee=\fR<amt>
.IP
Maximum total fees (in BTC) to use in a single wallet transaction or raw
transaction; setting this too low may abort large transactions
(default: 0.10)
Maximum total fees (in BTC) to use in a single wallet transaction;
setting this too low may abort large transactions (default: 0.10)
.HP
\fB\-printtoconsole\fR
.IP
@@ -464,9 +523,14 @@ Append comment to the user agent string
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
regtest
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
@@ -491,13 +555,15 @@ mining and transaction creation (default: 0.00001)
.HP
\fB\-whitelistforcerelay\fR
.IP
Force relay of transactions from whitelisted peers even if they violate
local relay policy (default: 0)
Add 'forcerelay' permission to whitelisted inbound peers with default
permissions. This will relay transactions even if the
transactions were already in the mempool. (default: 0)
.HP
\fB\-whitelistrelay\fR
.IP
Accept relayed transactions received from whitelisted peers even when
not relaying transactions (default: 1)
Add 'relay' permission to whitelisted inbound peers with default
permissions. This will accept relayed transactions even when not
relaying transactions (default: 1)
.PP
Block creation options:
.HP
@@ -568,14 +634,31 @@ Set the number of threads to service RPC calls (default: 4)
.IP
Username for JSON\-RPC connections
.HP
\fB\-rpcwhitelist=\fR<whitelist>
.IP
Set a whitelist to filter incoming RPC calls for a specific user. The
field <whitelist> comes in the format: <USERNAME>:<rpc 1>,<rpc
2>,...,<rpc n>. If multiple whitelists are set for a given user,
they are set\-intersected. See \fB\-rpcwhitelistdefault\fR documentation
for information on default whitelist behavior.
.HP
\fB\-rpcwhitelistdefault\fR
.IP
Sets default behavior for rpc whitelisting. Unless rpcwhitelistdefault
is set to 0, if any \fB\-rpcwhitelist\fR is set, the rpc server acts as
if all rpc users are subject to empty\-unless\-otherwise\-specified
whitelists. If rpcwhitelistdefault is set to 1 and no
\fB\-rpcwhitelist\fR is set, rpc server acts as if all rpc users are
subject to empty whitelists.
.HP
\fB\-server\fR
.IP
Accept command line and JSON\-RPC commands
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

View File

@@ -0,0 +1,12 @@
Updated RPCs
------------
- Due to [BIP 350](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki)
being implemented, behavior for all RPCs that accept addresses is changed when
a native witness version 1 (or higher) is passed. These now require a Bech32m
encoding instead of a Bech32 one, and Bech32m encoding will be used for such
addresses in RPC output as well. No version 1 addresses should be created
for mainnet until consensus rules are adopted that give them meaning
(e.g. through [BIP 341](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki)).
Once that happens, Bech32m is expected to be used for them, so this shouldn't
affect any production systems, but may be observed on other networks.

View File

@@ -1,5 +1,165 @@
Please edit the release notes here:
0.20.2 Release Notes
====================
https://github.com/bitcoin-core/bitcoin-devwiki/wiki/0.20.0-Release-Notes-Draft
Bitcoin Core version 0.20.2 is now available from:
*Before the final release, move the notes back to this git repository.*
<https://bitcoincore.org/bin/bitcoin-core-0.20.2/>
This minor release includes various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
<https://github.com/bitcoin/bitcoin/issues>
To receive security and update notifications, please subscribe to:
<https://bitcoincore.org/en/list/announcements/join/>
How to Upgrade
==============
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
or `bitcoind`/`bitcoin-qt` (on Linux).
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them. It is not recommended to use Bitcoin Core on
unsupported systems.
From Bitcoin Core 0.20.0 onwards, macOS versions earlier than 10.12 are no
longer supported. Additionally, Bitcoin Core does not yet change appearance
when macOS "dark mode" is activated.
Known Bugs
==========
The process for generating the source code release ("tarball") has changed in an
effort to make it more complete, however, there are a few regressions in
this release:
- The generated `configure` script is currently missing, and you will need to
install autotools and run `./autogen.sh` before you can run
`./configure`. This is the same as when checking out from git.
- Instead of running `make` simply, you should instead run
`BITCOIN_GENBUILD_NO_GIT=1 make`.
Notable changes
===============
Changes regarding misbehaving peers
-----------------------------------
Peers that misbehave (e.g. send us invalid blocks) are now referred to as
discouraged nodes in log output, as they're not (and weren't) strictly banned:
incoming connections are still allowed from them, but they're preferred for
eviction.
Furthermore, a few additional changes are introduced to how discouraged
addresses are treated:
- Discouraging an address does not time out automatically after 24 hours
(or the `-bantime` setting). Depending on traffic from other peers,
discouragement may time out at an indeterminate time.
- Discouragement is not persisted over restarts.
- There is no method to list discouraged addresses. They are not returned by
the `listbanned` RPC. That RPC also no longer reports the `ban_reason`
field, as `"manually added"` is the only remaining option.
- Discouragement cannot be removed with the `setban remove` RPC command.
If you need to remove a discouragement, you can remove all discouragements by
stop-starting your node.
Notification changes
--------------------
`-walletnotify` notifications are now sent for wallet transactions that are
removed from the mempool because they conflict with a new block. These
notifications were sent previously before the v0.19 release, but had been
broken since that release (bug
[#18325](https://github.com/bitcoin/bitcoin/issues/18325)).
PSBT changes
------------
PSBTs will contain both the non-witness utxo and the witness utxo for segwit
inputs in order to restore compatibility with wallet software that are now
requiring the full previous transaction for segwit inputs. The witness utxo
is still provided to maintain compatibility with software which relied on its
existence to determine whether an input was segwit.
0.20.2 change log
=================
### P2P protocol and network code
- #19620 Add txids with non-standard inputs to reject filter (sdaftuar)
- #20146 Send post-verack handshake messages at most once (MarcoFalke)
### Wallet
- #19740 Simplify and fix CWallet::SignTransaction (achow101)
### RPC and other APIs
- #19836 Properly deserialize txs with witness before signing (MarcoFalke)
- #20731 Add missing description of vout in getrawtransaction help text (benthecarman)
### Build system
- #20142 build: set minimum required Boost to 1.48.0 (fanquake)
- #20298 use the new plistlib API (jonasschnelli)
- #20880 gitian: Use custom MacOS code signing tool (achow101)
- #22190 Use latest signapple commit (achow101)
### Tests and QA
- #19839 Set appveyor vm version to previous Visual Studio 2019 release. (sipsorcery)
- #19842 Update the vcpkg checkout commit ID in appveyor config. (sipsorcery)
- #20562 Test that a fully signed tx given to signrawtx is unchanged (achow101)
### Miscellaneous
- #19192 Extract net permissions doc (MarcoFalke)
- #19777 Correct description for getblockstats's txs field (shesek)
- #20080 Strip any trailing / in -datadir and -blocksdir paths (hebasto)
- #20082 fixes read buffer to use min rather than max (EthanHeilman)
- #20141 Avoid the use of abs64 in timedata (sipa)
- #20756 Add missing field (permissions) to the getpeerinfo help (amitiuttarwar)
- #20861 BIP 350: Implement Bech32m and use it for v1+ segwit addresses (sipa)
- #22124 Update translations after closing 0.20.x on Transifex (hebasto)
- #21471 fix bech32_encode calls in gen_key_io_test_vectors.py (sipa)
- #22837 mention bech32m/BIP350 in doc/descriptors.md (sipa)
Credits
=======
Thanks to everyone who directly contributed to this release:
- Aaron Clauson
- Amiti Uttarwar
- Andrew Chow
- Ethan Heilman
- fanquake
- Hennadii Stepanov
- Jonas Schnelli
- MarcoFalke
- Nadav Ivgi
- Pieter Wuille
- Suhas Daftuar
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@@ -0,0 +1,987 @@
0.20.0 Release Notes
====================
Bitcoin Core version 0.20.0 is now available from:
<https://bitcoincore.org/bin/bitcoin-core-0.20.0/>
This release includes new features, various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
<https://github.com/bitcoin/bitcoin/issues>
To receive security and update notifications, please subscribe to:
<https://bitcoincore.org/en/list/announcements/join/>
How to Upgrade
==============
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
or `bitcoind`/`bitcoin-qt` (on Linux).
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them. It is not recommended to use Bitcoin Core on
unsupported systems.
From Bitcoin Core 0.20.0 onwards, macOS versions earlier than 10.12 are no
longer supported. Additionally, Bitcoin Core does not yet change appearance
when macOS "dark mode" is activated.
Known Bugs
==========
The process for generating the source code release ("tarball") has changed in an
effort to make it more complete, however, there are a few regressions in
this release:
- The generated `configure` script is currently missing, and you will need to
install autotools and run `./autogen.sh` before you can run
`./configure`. This is the same as when checking out from git.
- Instead of running `make` simply, you should instead run
`BITCOIN_GENBUILD_NO_GIT=1 make`.
Notable changes
===============
P2P and network changes
-----------------------
#### Removal of BIP61 reject network messages from Bitcoin Core
The `-enablebip61` command line option to enable BIP61 has been removed.
(#17004)
This feature has been disabled by default since Bitcoin Core version 0.18.0.
Nodes on the network can not generally be trusted to send valid messages
(including reject messages), so this should only ever be used when
connected to a trusted node. Please use the alternatives recommended
below if you rely on this removed feature:
- Testing or debugging of implementations of the Bitcoin P2P network protocol
should be done by inspecting the log messages that are produced by a recent
version of Bitcoin Core. Bitcoin Core logs debug messages
(`-debug=<category>`) to a stream (`-printtoconsole`) or to a file
(`-debuglogfile=<debug.log>`).
- Testing the validity of a block can be achieved by specific RPCs:
- `submitblock`
- `getblocktemplate` with `'mode'` set to `'proposal'` for blocks with
potentially invalid POW
- Testing the validity of a transaction can be achieved by specific RPCs:
- `sendrawtransaction`
- `testmempoolaccept`
- Wallets should not assume a transaction has propagated to the network
just because there are no reject messages. Instead, listen for the
transaction to be announced by other peers on the network. Wallets
should not assume a lack of reject messages means a transaction pays
an appropriate fee. Instead, set fees using fee estimation and use
replace-by-fee to increase a transaction's fee if it hasn't confirmed
within the desired amount of time.
The removal of BIP61 reject message support also has the following minor RPC
and logging implications:
- `testmempoolaccept` and `sendrawtransaction` no longer return the P2P reject
code when a transaction is not accepted to the mempool. They still return the
verbal reject reason.
- Log messages that previously reported the reject code when a transaction was
not accepted to the mempool now no longer report the reject code. The reason
for rejection is still reported.
Updated RPCs
------------
- The RPCs which accept descriptors now accept the new `sortedmulti(...)` descriptor
type which supports multisig scripts where the public keys are sorted
lexicographically in the resulting script. (#17056)
- The `walletprocesspsbt` and `walletcreatefundedpsbt` RPCs now include
BIP32 derivation paths by default for public keys if we know them.
This can be disabled by setting the `bip32derivs` parameter to
`false`. (#17264)
- The `bumpfee` RPC's parameter `totalFee`, which was deprecated in
0.19, has been removed. (#18312)
- The `bumpfee` RPC will return a PSBT when used with wallets that have
private keys disabled. (#16373)
- The `getpeerinfo` RPC now includes a `mapped_as` field to indicate the
mapped Autonomous System used for diversifying peer selection. See the
`-asmap` configuration option described below in _New Settings_. (#16702)
- The `createmultisig` and `addmultisigaddress` RPCs now return an
output script descriptor for the newly created address. (#18032)
Build System
------------
- OpenSSL is no longer used by Bitcoin Core. (#17265)
- BIP70 support has been fully removed from Bitcoin Core. The
`--enable-bip70` option remains, but it will throw an error during configure.
(#17165)
- glibc 2.17 or greater is now required to run the release binaries. This
retains compatibility with RHEL 7, CentOS 7, Debian 8 and Ubuntu 14.04 LTS. (#17538)
- The source code archives that are provided with gitian builds no longer contain
any autotools artifacts. Therefore, to build from such source, a user
should run the `./autogen.sh` script from the root of the unpacked archive.
This implies that `autotools` and other required packages are installed on the
user's system. (#18331)
New settings
------------
- New `rpcwhitelist` and `rpcwhitelistdefault` configuration parameters
allow giving certain RPC users permissions to only some RPC calls.
(#12763)
- A new `-asmap` configuration option has been added to diversify the
node's network connections by mapping IP addresses Autonomous System
Numbers (ASNs) and then limiting the number of connections made to any
single ASN. See [issue #16599](https://github.com/bitcoin/bitcoin/issues/16599),
[PR #16702](https://github.com/bitcoin/bitcoin/pull/16702), and the
`bitcoind help` for more information. This option is experimental and
subject to removal or breaking changes in future releases, so the
legacy /16 prefix mapping of IP addresses remains the default. (#16702)
Updated settings
----------------
- All custom settings configured when Bitcoin Core starts are now
written to the `debug.log` file to assist troubleshooting. (#16115)
- Importing blocks upon startup via the `bootstrap.dat` file no longer
occurs by default. The file must now be specified with
`-loadblock=<file>`. (#17044)
- The `-debug=db` logging category has been renamed to
`-debug=walletdb` to distinguish it from `coindb`. The `-debug=db`
option has been deprecated and will be removed in the next major
release. (#17410)
- The `-walletnotify` configuration parameter will now replace any `%w`
in its argument with the name of the wallet generating the
notification. This is not supported on Windows. (#13339)
Removed settings
----------------
- The `-whitelistforcerelay` configuration parameter has been removed after
it was discovered that it was rendered ineffective in version 0.13 and
hasn't actually been supported for almost four years. (#17985)
GUI changes
-----------
- The "Start Bitcoin Core on system login" option has been removed on macOS.
(#17567)
- In the Peers window, the details for a peer now displays a `Mapped AS`
field to indicate the mapped Autonomous System used for diversifying
peer selection. See the `-asmap` configuration option in _New
Settings_, above. (#18402)
- A "known bug" [announced](https://bitcoincore.org/en/releases/0.18.0/#wallet-gui)
in the release notes of version 0.18 has been fixed. The issue
affected anyone who simultaneously used multiple Bitcoin Core wallets
and the GUI coin control feature. (#18894)
- For watch-only wallets, creating a new transaction in the Send screen
or fee bumping an existing transaction in the Transactions screen will
automatically copy a Partially-Signed Bitcoin Transaction (PSBT) to
the system clipboard. This can then be pasted into an external
program such as [HWI](https://github.com/bitcoin-core/HWI) for
signing. Future versions of Bitcoin Core should support a GUI option
for finalizing and broadcasting PSBTs, but for now the debug console
may be used with the `finalizepsbt` and `sendrawtransaction` RPCs.
(#16944, #17492)
Wallet
------
- The wallet now by default uses bech32 addresses when using RPC, and
creates native segwit change outputs. (#16884)
- The way that output trust was computed has been fixed, which affects
confirmed/unconfirmed balance status and coin selection. (#16766)
- The `gettransaction`, `listtransactions` and `listsinceblock` RPC
responses now also include the height of the block that contains the
wallet transaction, if any. (#17437)
- The `getaddressinfo` RPC has had its `label` field deprecated
(re-enable for this release using the configuration parameter
`-deprecatedrpc=label`). The `labels` field is altered from returning
JSON objects to returning a JSON array of label names (re-enable
previous behavior for this release using the configuration parameter
`-deprecatedrpc=labelspurpose`). Backwards compatibility using the
deprecated configuration parameters is expected to be dropped in the
0.21 release. (#17585, #17578)
Documentation changes
---------------------
- Bitcoin Core's automatically-generated source code documentation is
now available at https://doxygen.bitcoincore.org. (#17596)
Low-level changes
=================
Utilities
---------
- The `bitcoin-cli` utility used with the `-getinfo` parameter now
returns a `headers` field with the number of downloaded block headers
on the best headers chain (similar to the `blocks` field that is also
returned) and a `verificationprogress` field that estimates how much
of the best block chain has been synced by the local node. The
information returned no longer includes the `protocolversion`,
`walletversion`, and `keypoololdest` fields. (#17302, #17650)
- The `bitcoin-cli` utility now accepts a `-stdinwalletpassphrase`
parameter that can be used when calling the `walletpassphrase` and
`walletpassphrasechange` RPCs to read the passphrase from standard
input without echoing it to the terminal, improving security against
anyone who can look at your screen. The existing `-stdinrpcpass`
parameter is also updated to not echo the passphrase. (#13716)
Command line
------------
- Command line options prefixed with main/test/regtest network names like
`-main.port=8333` `-test.server=1` previously were allowed but ignored. Now
they trigger "Invalid parameter" errors on startup. (#17482)
New RPCs
--------
- The `dumptxoutset` RPC outputs a serialized snapshot of the current
UTXO set. A script is provided in the `contrib/devtools` directory
for generating a snapshot of the UTXO set at a particular block
height. (#16899)
- The `generatetodescriptor` RPC allows testers using regtest mode to
generate blocks that pay an arbitrary output script descriptor.
(#16943)
Updated RPCs
------------
- The `verifychain` RPC default values are now static instead of
depending on the command line options or configuration file
(`-checklevel`, and `-checkblocks`). Users can pass in the RPC
arguments explicitly when they don't want to rely on the default
values. (#18541)
- The `getblockchaininfo` RPC's `verificationprogress` field will no
longer report values higher than 1. Previously it would occasionally
report the chain was more than 100% verified. (#17328)
Tests
-----
- It is now an error to use an unqualified `walletdir=path` setting in
the config file if running on testnet or regtest networks. The setting
now needs to be qualified as `chain.walletdir=path` or placed in the
appropriate `[chain]` section. (#17447)
- `-fallbackfee` was 0 (disabled) by default for the main chain, but
0.0002 by default for the test chains. Now it is 0 by default for all
chains. Testnet and regtest users will have to add
`fallbackfee=0.0002` to their configuration if they weren't setting it
and they want it to keep working like before. (#16524)
Build system
------------
- Support is provided for building with the Android Native Development
Kit (NDK). (#16110)
0.20.0 change log
=================
### Mining
- #18742 miner: Avoid stack-use-after-return in validationinterface (MarcoFalke)
### Block and transaction handling
- #15283 log: Fix UB with bench on genesis block (instagibbs)
- #16507 feefilter: Compute the absolute fee rather than stored rate (instagibbs)
- #16688 log: Add validation interface logging (jkczyz)
- #16805 log: Add timing information to FlushStateToDisk() (jamesob)
- #16902 O(1) `OP_IF/NOTIF/ELSE/ENDIF` script implementation (sipa)
- #16945 introduce CChainState::GetCoinsCacheSizeState (jamesob)
- #16974 Walk pindexBestHeader back to ChainActive().Tip() if it is invalid (TheBlueMatt)
- #17004 Remove REJECT code from CValidationState (jnewbery)
- #17080 Explain why `fCheckDuplicateInputs` can not be skipped and remove it (MarcoFalke)
- #17328 GuessVerificationProgress: cap the ratio to 1 (darosior)
- #17399 Templatize ValidationState instead of subclassing (jkczyz)
- #17407 node: Add reference to mempool in NodeContext (MarcoFalke)
- #17708 prevector: Avoid misaligned member accesses (ajtowns)
- #17850,#17896,#17957,#18021,#18021,#18112 Serialization improvements (sipa)
- #17925 Improve UpdateTransactionsFromBlock with Epochs (JeremyRubin)
- #18002 Abstract out script execution out of `VerifyWitnessProgram()` (sipa)
- #18388 Make VerifyWitnessProgram use a Span stack (sipa)
- #18433 serialization: prevent int overflow for big Coin::nHeight (pierreN)
- #18500 chainparams: Bump assumed valid hash (MarcoFalke)
- #18551 Do not clear validationinterface entries being executed (sipa)
### P2P protocol and network code
- #15437 Remove BIP61 reject messages (MarcoFalke)
- #16702 Supply and use asmap to improve IP bucketing in addrman (naumenkogs)
- #16851 Continue relaying transactions after they expire from mapRelay (ajtowns)
- #17164 Avoid allocating memory for addrKnown where we don't need it (naumenkogs)
- #17243 tools: add PoissonNextSend method that returns mockable time (amitiuttarwar)
- #17251 SocketHandler logs peer id for close and disconnect (Sjors)
- #17573 Seed RNG with precision timestamps on receipt of net messages (TheBlueMatt)
- #17624 Fix an uninitialized read in ProcessMessage(…, "tx", …) when receiving a transaction we already have (practicalswift)
- #17754 Don't allow resolving of std::string with embedded NUL characters. Add tests (practicalswift)
- #17758 Fix CNetAddr::IsRFC2544 comment + tests (tynes)
- #17812 config, net, test: Asmap feature refinements and functional tests (jonatack)
- #17951 Use rolling bloom filter of recent block txs for AlreadyHave() check (sdaftuar)
- #17985 Remove forcerelay of rejected txs (MarcoFalke)
- #18023 Fix some asmap issues (sipa)
- #18054 Reference instead of copy in BlockConnected range loop (jonatack)
- #18376 Fix use-after-free in tests (vasild)
- #18454 Make addr relay mockable, add test (MarcoFalke)
- #18458 Add missing `cs_vNodes` lock (MarcoFalke)
- #18506 Hardcoded seeds update for 0.20 (laanwj)
- #18808 Drop unknown types in getdata (jnewbery)
- #18962 Only send a getheaders for one block in an INV (jnewbery)
### Wallet
- #13339 Replace %w by wallet name in -walletnotify script (promag)
- #15931 Remove GetDepthInMainChain dependency on locked chain interface (ariard)
- #16373 bumpfee: Return PSBT when wallet has privkeys disabled (instagibbs)
- #16524 Disable -fallbackfee by default (jtimon)
- #16766 Make IsTrusted scan parents recursively (JeremyRubin)
- #16884 Change default address type to bech32 (instagibbs)
- #16911 Only check the hash of transactions loaded from disk (achow101)
- #16923 Handle duplicate fileid exception (promag)
- #17056 descriptors: Introduce sortedmulti descriptor (achow101)
- #17070 Avoid showing GUI popups on RPC errors (MarcoFalke)
- #17138 Remove wallet access to some node arguments (jnewbery)
- #17237 LearnRelatedScripts only if KeepDestination (promag)
- #17260 Split some CWallet functions into new LegacyScriptPubKeyMan (achow101)
- #17261 Make ScriptPubKeyMan an actual interface and the wallet to have multiple (achow101)
- #17290 Enable BnB coin selection for preset inputs and subtract fee from outputs (achow101)
- #17373 Various fixes and cleanup to keypool handling in LegacyScriptPubKeyMan and CWallet (achow101)
- #17410 Rename `db` log category to `walletdb` (like `coindb`) (laanwj)
- #17444 Avoid showing GUI popups on RPC errors (take 2) (MarcoFalke)
- #17447 Make -walletdir network only (promag)
- #17537 Cleanup and move opportunistic and superfluous TopUp()s (achow101)
- #17553 Remove out of date comments for CalculateMaximumSignedTxSize (instagibbs)
- #17568 Fix when sufficient preset inputs and subtractFeeFromOutputs (achow101)
- #17677 Activate watchonly wallet behavior for LegacySPKM only (instagibbs)
- #17719 Document better -keypool as a look-ahead safety mechanism (ariard)
- #17843 Reset reused transactions cache (fjahr)
- #17889 Improve CWallet:MarkDestinationsDirty (promag)
- #18034 Get the OutputType for a descriptor (achow101)
- #18067 Improve LegacyScriptPubKeyMan::CanProvide script recognition (ryanofsky)
- #18115 Pass in transactions and messages for signing instead of exporting the private keys (achow101)
- #18192,#18546 Bugfix: Wallet: Safely deal with change in the address book (luke-jr)
- #18204 descriptors: Improve descriptor cache and cache xpubs (achow101)
- #18274 rpc/wallet: Initialize nFeeRequired to avoid using garbage value on failure (kallewoof)
- #18312 Remove deprecated fee bumping by totalFee (jonatack)
- #18338 Fix wallet unload race condition (promag)
### RPC and other APIs
- #12763 Add RPC Whitelist Feature from #12248 (JeremyRubin)
- #13716 cli: `-stdinwalletpassphrase` and non-echo stdin passwords (kallewoof)
- #16689 Add missing fields to wallet rpc help output (ariard)
- #16821 Fix bug where duplicate PSBT keys are accepted (erasmospunk)
- #16899 UTXO snapshot creation (dumptxoutset)
- #17156 psbt: Check that various indexes and amounts are within bounds (achow101)
- #17264 Set default bip32derivs to true for psbt methods (Sjors)
- #17283 improve getaddressinfo test coverage, help, code docs (jonatack)
- #17302 cli: Add "headers" and "verificationprogress" to -getinfo (laanwj)
- #17318 replace asserts in RPC code with `CHECK_NONFATAL` and add linter (adamjonas)
- #17437 Expose block height of wallet transactions (promag)
- #17519 Remove unused `COINBASE_FLAGS` (narula)
- #17578 Simplify getaddressinfo labels, deprecate previous behavior (jonatack)
- #17585 deprecate getaddressinfo label (jonatack)
- #17746 Remove vector copy from listtransactions (promag)
- #17809 Auto-format RPCResult (MarcoFalke)
- #18032 Output a descriptor in createmultisig and addmultisigaddress (achow101)
- #18122 Update validateaddress RPCExamples to bech32 (theStack)
- #18208 Change RPCExamples to bech32 (yusufsahinhamza)
- #18268 Remove redundant types from descriptions (docallag)
- #18346 Document an RPCResult for all calls; Enforce at compile time (MarcoFalke)
- #18396 Add missing HelpExampleRpc for getblockfilter (theStack)
- #18398 Fix broken RPCExamples for waitforblock(height) (theStack)
- #18444 Remove final comma for last entry of fixed-size arrays/objects in RPCResult (luke-jr)
- #18459 Remove unused getbalances() code (jonatack)
- #18484 Correctly compute redeemScript from witnessScript for signrawtransaction (achow101)
- #18487 Fix rpcRunLater race in walletpassphrase (promag)
- #18499 Make rpc documentation not depend on call-time rpc args (MarcoFalke)
- #18532 Avoid initialization-order-fiasco on static CRPCCommand tables (MarcoFalke)
- #18541 Make verifychain default values static, not depend on global args (MarcoFalke)
- #18809 Do not advertise dumptxoutset as a way to flush the chainstate (MarcoFalke)
- #18814 Relock wallet only if most recent callback (promag)
### GUI
- #15023 Restore RPC Console to non-wallet tray icon menu (luke-jr)
- #15084 Don't disable the sync overlay when wallet is disabled (benthecarman)
- #15098 Show addresses for "SendToSelf" transactions (hebasto)
- #15756 Add shortcuts for tab tools (promag)
- #16944 create PSBT with watch-only wallet (Sjors)
- #16964 Change sendcoins dialogue Yes to Send (instagibbs)
- #17068 Always generate `bitcoinstrings.cpp` on `make translate` (D4nte)
- #17096 Rename debug window (Zero-1729)
- #17105 Make RPCConsole::TabTypes an enum class (promag)
- #17125 Add toolTip and placeholderText to sign message fields (dannmat)
- #17165 Remove BIP70 support (fanquake)
- #17180 Improved tooltip for send amount field (JeremyCrookshank)
- #17186 Add placeholder text to the sign message field (Danny-Scott)
- #17195 Send amount placeholder value (JeremyCrookshank)
- #17226 Fix payAmount tooltip in SendCoinsEntry (promag)
- #17360 Cleaning up hide button tool tip (Danny-Scott)
- #17446 Changed tooltip for 'Label' & 'Message' text fields to be more clear (dannmat)
- #17453 Fix intro dialog labels when the prune button is toggled (hebasto)
- #17474 Bugfix: GUI: Recognise `NETWORK_LIMITED` in formatServicesStr (luke-jr)
- #17492 Bump fee returns PSBT on clipboard for watchonly-only wallets (instagibbs)
- #17567 Remove macOS start on login code (fanquake)
- #17587 Show watch-only balance in send screen (Sjors)
- #17694 Disable 3rd-party tx-urls when wallet disabled (brakmic)
- #17696 Force set nPruneSize in QSettings after the intro dialog (hebasto)
- #17702 Move static placeholder texts to forms (laanwj)
- #17826 Log Qt related info (hebasto)
- #17886 Restore English translation option (achow101)
- #17906 Set CConnman byte counters earlier to avoid uninitialized reads (ryanofsky)
- #17935 Hide HD & encryption icons when no wallet loaded (brakmic)
- #17998 Shortcut to close ModalOverlay (emilengler)
- #18007 Bugfix: GUI: Hide the HD/encrypt icons earlier so they get re-shown if another wallet is open (luke-jr)
- #18060 Drop PeerTableModel dependency to ClientModel (promag)
- #18062 Fix unintialized WalletView::progressDialog (promag)
- #18091 Pass clientmodel changes from walletframe to walletviews (jonasschnelli)
- #18101 Fix deprecated QCharRef usage (hebasto)
- #18121 Throttle GUI update pace when -reindex (hebasto)
- #18123 Fix race in WalletModel::pollBalanceChanged (ryanofsky)
- #18160 Avoid Wallet::GetBalance in WalletModel::pollBalanceChanged (promag)
- #18360 Bump transifex slug and update English translations for 0.20 (laanwj)
- #18402 Display mapped AS in peers info window (jonatack)
- #18492 Translations update pre-branch (laanwj)
- #18549 Fix Window -> Minimize menu item (hebasto)
- #18578 Fix leak in CoinControlDialog::updateView (promag)
- #18894 Fix manual coin control with multiple wallets loaded (promag)
### Build system
- #16667 Remove mingw linker workaround from win gitian descriptor (fanquake)
- #16669 Use new fork of osslsigncode for windows gitian signing (fanquake)
- #16949 Only pass --disable-dependency-tracking to packages that understand it (fanquake)
- #17008 Bump libevent to 2.1.11 in depends (stefanwouldgo)
- #17029 gitian: Various improvements for windows descriptor (dongcarl)
- #17033 Disable _FORTIFY_SOURCE when enable-debug (achow101)
- #17057 Switch to upstream libdmg-hfsplus (fanquake)
- #17066 Remove workaround for ancient libtool (hebasto)
- #17074 Added double quotes (mztriz)
- #17087 Add variable printing target to Makefiles (dongcarl)
- #17118 depends macOS: point --sysroot to SDK (Sjors)
- #17231 Fix boost mac cross build with clang 9+ (theuni)
- #17265 Remove OpenSSL (fanquake)
- #17284 Update retry to current version (RandyMcMillan)
- #17308 nsis: Write to correct filename in first place (dongcarl)
- #17324,#18099 Update univalue subtree (MarcoFalke)
- #17398 Update leveldb to 1.22+ (laanwj)
- #17409 Avoid hardcoded libfaketime dir in gitian (MarcoFalke)
- #17466 Fix C{,XX} pickup (dongcarl)
- #17483 Set gitian arch back to amd64 (MarcoFalke)
- #17486 Make Travis catch unused variables (Sjors)
- #17538 Bump minimum libc to 2.17 for release binaries (fanquake)
- #17542 Create test utility library from src/test/util/ (brakmic)
- #17545 Remove libanl.so.1 from ALLOWED_LIBRARIES (fanquake)
- #17547 Fix configure report about qr (hebasto)
- #17569 Allow export of environ symbols and work around rv64 toolchain issue (laanwj)
- #17647 lcov: filter depends from coverage reports (nijynot)
- #17658 Add ability to skip building qrencode (fanquake)
- #17678 Support for S390X and POWER targets (MarcoFalke)
- #17682 util: Update tinyformat to upstream (laanwj)
- #17698 Don't configure `xcb_proto` (fanquake)
- #17730 Remove Qt networking features (fanquake)
- #17738 Remove linking librt for backwards compatibility (fanquake)
- #17740 Remove configure checks for win libraries we don't link against (fanquake)
- #17741 Included `test_bitcoin-qt` in msvc build (sipsorcery)
- #17756 Remove `WINDOWS_BITS` from build system (fanquake)
- #17769 Set `AC_PREREQ` to 2.69 (fanquake)
- #17880 Add -Wdate-time to Werror flags (fanquake)
- #17910 Remove double `LIBBITCOIN_SERVER` linking (fanquake)
- #17928 Consistent use of package variable (Bushstar)
- #17933 guix: Pin Guix using `guix time-machine` (dongcarl)
- #17948 pass -fno-ident in Windows gitian descriptor (fanquake)
- #18003 Remove --large-address-aware linker flag (fanquake)
- #18004 Don't embed a build-id when building libdmg-hfsplus (fanquake)
- #18051 Fix behavior when `ALLOW_HOST_PACKAGES` unset (hebasto)
- #18059 Add missing attributes to Win installer (fanquake)
- #18104 Skip i686 build by default in guix and gitian (MarcoFalke)
- #18107 Add `cov_fuzz` target (MarcoFalke)
- #18135 Add --enable-determinism configure flag (fanquake)
- #18145 Add Wreturn-type to Werror flags, check on more Travis machines (Sjors)
- #18264 Remove Boost Chrono (fanquake)
- #18290 Set minimum Automake version to 1.13 (hebasto)
- #18320 guix: Remove now-unnecessary gcc make flag (dongcarl)
- #18331 Use git archive as source tarball (hebasto)
- #18397 Fix libevent linking for `bench_bitcoin` binary (hebasto)
- #18426 scripts: `Previous_release`: improve behaviour on failed download (theStack)
- #18429 Remove double `LIBBITCOIN_SERVER` from bench-Makefile (brakmic)
- #18528 Create `test_fuzz` library from src/test/fuzz/fuzz.cpp (brakmic)
- #18558 Fix boost detection for arch armv7l (hebasto)
- #18598 gitian: Add missing automake package to gitian-win-signer.yml (achow101)
- #18676 Check libevent minimum version in configure script (hebasto)
- #18945 Ensure source tarball has leading directory name (laanwj)
### Platform support
- #16110 Add Android NDK support (icota)
- #16392 macOS toolchain update (fanquake)
- #16569 Increase init file stop timeout (setpill)
- #17151 Remove OpenSSL PRNG seeding (Windows, Qt only) (fanquake)
- #17365 Update README.md with working Android targets and API levels (icota)
- #17521 Only use D-Bus with Qt on linux (fanquake)
- #17550 Set minimum supported macOS to 10.12 (fanquake)
- #17592 Appveyor install libevent[thread] vcpkg (sipsorcery)
- #17660 Remove deprecated key from macOS Info.plist (fanquake)
- #17663 Pass `-dead_strip_dylibs` to ld on macOS (fanquake)
- #17676 Don't use OpenGL in Qt on macOS (fanquake)
- #17686 Add `-bind_at_load` to macOS hardened LDFLAGS (fanquake)
- #17787 scripts: Add macho pie check to security-check.py (fanquake)
- #17800 random: don't special case clock usage on macOS (fanquake)
- #17863 scripts: Add macho dylib checks to symbol-check.py (fanquake)
- #17899 msvc: Ignore msvc linker warning and update to msvc build instructions (sipsorcery)
- #17916 windows: Enable heap terminate-on-corruption (fanquake)
- #18082 logging: Enable `thread_local` usage on macos (fanquake)
- #18108 Fix `.gitignore` policy in `build_msvc` directory (hebasto)
- #18295 scripts: Add macho lazy bindings check to security-check.py (fanquake)
- #18358 util: Fix compilation with mingw-w64 7.0.0 (fanquake)
- #18359 Fix sysctl() detection on macOS (fanquake)
- #18364 random: remove getentropy() fallback for macOS < 10.12 (fanquake)
- #18395 scripts: Add pe dylib checking to symbol-check.py (fanquake)
- #18415 scripts: Add macho tests to test-security-check.py (fanquake)
- #18425 releases: Update with new Windows code signing certificate (achow101)
- #18702 Fix ASLR for bitcoin-cli on Windows (fanquake)
### Tests and QA
- #12134 Build previous releases and run functional tests (Sjors)
- #13693 Add coverage to estimaterawfee and estimatesmartfee (Empact)
- #13728 lint: Run the ci lint stage on mac (Empact)
- #15443 Add getdescriptorinfo functional test (promag)
- #15888 Add `wallet_implicitsegwit` to test the ability to transform keys between address types (luke-jr)
- #16540 Add `ASSERT_DEBUG_LOG` to unit test framework (MarcoFalke)
- #16597 travis: Run full test suite on native macos (Sjors)
- #16681 Use self.chain instead of 'regtest' in all current tests (jtimon)
- #16786 add unit test for wallet watch-only methods involving PubKeys (theStack)
- #16943 Add generatetodescriptor RPC (MarcoFalke)
- #16973 Fix `combine_logs.py` for AppVeyor build (mzumsande)
- #16975 Show debug log on unit test failure (MarcoFalke)
- #16978 Seed test RNG context for each test case, print seed (MarcoFalke)
- #17009, #17018, #17050, #17051, #17071, #17076, #17083, #17093, #17109, #17113, #17136, #17229, #17291, #17357, #17771, #17777, #17917, #17926, #17972, #17989, #17996, #18009, #18029, #18047, #18126, #18176, #18206, #18353, #18363, #18407, #18417, #18423, #18445, #18455, #18565 Add fuzzing harnesses (practicalswift)
- #17011 ci: Use busybox utils for one build (MarcoFalke)
- #17030 Fix Python Docstring to include all Args (jbampton)
- #17041 ci: Run tests on arm (MarcoFalke)
- #17069 Pass fuzzing inputs as constant references (practicalswift)
- #17091 Add test for loadblock option and linearize scripts (fjahr)
- #17108 fix "tx-size-small" errors after default address change (theStack)
- #17121 Speed up `wallet_backup` by whitelisting peers (immediate tx relay) (theStack)
- #17124 Speed up `wallet_address_types` by whitelisting peers (immediate tx relay) (theStack)
- #17140 Fix bug in `blockfilter_index_tests` (jimpo)
- #17199 use default address type (bech32) for `wallet_bumpfee` tests (theStack)
- #17205 ci: Enable address sanitizer (asan) stack-use-after-return checking (practicalswift)
- #17206 Add testcase to simulate bitcoin schema in leveldb (adamjonas)
- #17209 Remove no longer needed UBSan suppressions (issues fixed). Add documentation (practicalswift)
- #17220 Add unit testing for the CompressScript function (adamjonas)
- #17225 Test serialisation as part of deserialisation fuzzing. Test round-trip equality where possible (practicalswift)
- #17228 Add RegTestingSetup to `setup_common` (MarcoFalke)
- #17233 travis: Run unit and functional tests on native arm (MarcoFalke)
- #17235 Skip unnecessary fuzzer initialisation. Hold ECCVerifyHandle only when needed (practicalswift)
- #17240 ci: Disable functional tests on mac host (MarcoFalke)
- #17254 Fix `script_p2sh_tests` `OP_PUSHBACK2/4` missing (adamjonas)
- #17267 bench: Fix negative values and zero for -evals flag (nijynot)
- #17275 pubkey: Assert CPubKey's ECCVerifyHandle precondition (practicalswift)
- #17288 Added TestWrapper class for interactive Python environments (jachiang)
- #17292 Add new mempool benchmarks for a complex pool (JeremyRubin)
- #17299 add reason checks for non-standard txs in `test_IsStandard` (theStack)
- #17322 Fix input size assertion in `wallet_bumpfee.py` (instagibbs)
- #17327 Add `rpc_fundrawtransaction` logging (jonatack)
- #17330 Add `shrinkdebugfile=0` to regtest bitcoin.conf (sdaftuar)
- #17340 Speed up fundrawtransaction test (jnewbery)
- #17345 Do not instantiate CAddrDB for static call CAddrDB::Read() (hebasto)
- #17362 Speed up `wallet_avoidreuse`, add logging (jonatack)
- #17363 add "diamond" unit test to MempoolAncestryTests (theStack)
- #17366 Reset global args between test suites (MarcoFalke)
- #17367 ci: Run non-cross-compile builds natively (MarcoFalke)
- #17378 TestShell: Fix typos & implement cleanups (jachiang)
- #17384 Create new test library (MarcoFalke)
- #17387 `wallet_importmulti`: use addresses of the same type as being imported (achow101)
- #17388 Add missing newline in `util_ChainMerge` test (ryanofsky)
- #17390 Add `util_ArgParsing` test (ryanofsky)
- #17420 travis: Rework `cache_err_msg` (MarcoFalke)
- #17423 ci: Make ci system read-only on the git work tree (MarcoFalke)
- #17435 check custom ancestor limit in `mempool_packages.py` (theStack)
- #17455 Update valgrind suppressions (practicalswift)
- #17461 Check custom descendant limit in `mempool_packages.py` (theStack)
- #17469 Remove fragile `assert_memory_usage_stable` (MarcoFalke)
- #17470 ci: Use clang-8 for fuzzing to run on aarch64 ci systems (MarcoFalke)
- #17480 Add unit test for non-standard txs with too large scriptSig (theStack)
- #17497 Skip tests when utils haven't been compiled (fanquake)
- #17502 Add unit test for non-standard bare multisig txs (theStack)
- #17511 Add bounds checks before base58 decoding (sipa)
- #17517 ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le (MarcoFalke)
- #17522 Wait until mempool is loaded in `wallet_abandonconflict` (MarcoFalke)
- #17532 Add functional test for non-standard txs with too large scriptSig (theStack)
- #17541 Add functional test for non-standard bare multisig txs (theStack)
- #17555 Add unit test for non-standard txs with wrong nVersion (dspicher)
- #17571 Add `libtest_util` library to msvc build configuration (sipsorcery)
- #17591 ci: Add big endian platform - s390x (elichai)
- #17593 Move more utility functions into test utility library (mzumsande)
- #17633 Add option --valgrind to run the functional tests under Valgrind (practicalswift)
- #17635 ci: Add centos 7 build (hebasto)
- #17641 Add unit test for leveldb creation with unicode path (sipsorcery)
- #17674 Add initialization order fiasco detection in Travis (practicalswift)
- #17675 Enable tests which are incorrectly skipped when running `test_runner.py --usecli` (practicalswift)
- #17685 Fix bug in the descriptor parsing fuzzing harness (`descriptor_parse`) (practicalswift)
- #17705 re-enable CLI test support by using EncodeDecimal in json.dumps() (fanquake)
- #17720 add unit test for non-standard "scriptsig-not-pushonly" txs (theStack)
- #17767 ci: Fix qemu issues (MarcoFalke)
- #17793 ci: Update github actions ci vcpkg cache on msbuild update (hebasto)
- #17806 Change filemode of `rpc_whitelist.py` (emilengler)
- #17849 ci: Fix brew python link (hebasto)
- #17851 Add `std::to_string` to list of locale dependent functions (practicalswift)
- #17893 Fix double-negative arg test (hebasto)
- #17900 ci: Combine 32-bit build with centos 7 build (theStack)
- #17921 Test `OP_CSV` empty stack fail in `feature_csv_activation.py` (theStack)
- #17931 Fix `p2p_invalid_messages` failing in Python 3.8 because of warning (elichai)
- #17947 add unit test for non-standard txs with too large tx size (theStack)
- #17959 Check specific reject reasons in `feature_csv_activation.py` (theStack)
- #17984 Add p2p test for forcerelay permission (MarcoFalke)
- #18001 Updated appveyor job to checkout a specific vcpkg commit ID (sipsorcery)
- #18008 fix fuzzing using libFuzzer on macOS (fanquake)
- #18013 bench: Fix benchmarks filters (elichai)
- #18018 reset fIsBareMultisigStd after bare-multisig tests (fanquake)
- #18022 Fix appveyor `test_bitcoin` build of `*.raw` (MarcoFalke)
- #18037 util: Allow scheduler to be mocked (amitiuttarwar)
- #18056 ci: Check for submodules (emilengler)
- #18069 Replace 'regtest' leftovers by self.chain (theStack)
- #18081 Set a name for CI Docker containers (fanquake)
- #18109 Avoid hitting some known minor tinyformat issues when fuzzing strprintf(…) (practicalswift)
- #18155 Add harness which fuzzes EvalScript and VerifyScript using a fuzzed signature checker (practicalswift)
- #18159 Add --valgrind option to `test/fuzz/test_runner.py` for running fuzzing test cases under valgrind (practicalswift)
- #18166 ci: Run fuzz testing test cases (bitcoin-core/qa-assets) under valgrind to catch memory errors (practicalswift)
- #18172 Transaction expiry from mempool (0xB10C)
- #18181 Remove incorrect assumptions in `validation_flush_tests` (MarcoFalke)
- #18183 Set `catch_system_errors=no` on boost unit tests (MarcoFalke)
- #18195 Add `cost_of_change` parameter assertions to `bnb_search_test` (yancyribbens)
- #18209 Reduce unneeded whitelist permissions in tests (MarcoFalke)
- #18211 Disable mockforward scheduler unit test for now (MarcoFalke)
- #18213 Fix race in `p2p_segwit` (MarcoFalke)
- #18224 Make AnalyzePSBT next role calculation simple, correct (instagibbs)
- #18228 Add missing syncwithvalidationinterfacequeue (MarcoFalke)
- #18247 Wait for both veracks in `add_p2p_connection` (MarcoFalke)
- #18249 Bump timeouts to accomodate really slow disks (MarcoFalke)
- #18255 Add `bad-txns-*-toolarge` test cases to `invalid_txs` (MarcoFalke)
- #18263 rpc: change setmocktime check to use IsMockableChain (gzhao408)
- #18285 Check that `wait_until` returns if time point is in the past (MarcoFalke)
- #18286 Add locale fuzzer to `FUZZERS_MISSING_CORPORA` (practicalswift)
- #18292 fuzz: Add `assert(script == decompressed_script)` (MarcoFalke)
- #18299 Update `FUZZERS_MISSING_CORPORA` to enable regression fuzzing for all harnesses in master (practicalswift)
- #18300 fuzz: Add option to merge input dir to test runner (MarcoFalke)
- #18305 Explain why test logging should be used (MarcoFalke)
- #18306 Add logging to `wallet_listsinceblock.py` (jonatack)
- #18311 Bumpfee test fix (instagibbs)
- #18314 Add deserialization fuzzing of SnapshotMetadata (`utxo_snapshot`) (practicalswift)
- #18319 fuzz: Add missing `ECC_Start` to `key_io` test (MarcoFalke)
- #18334 Add basic test for BIP 37 (MarcoFalke)
- #18350 Fix mining to an invalid target + ensure that a new block has the correct hash internally (TheQuantumPhysicist)
- #18378 Bugfix & simplify bn2vch using `int.to_bytes` (sipa)
- #18393 Don't assume presence of `__builtin_mul_overflow(…)` in `MultiplicationOverflow(…)` fuzzing harness (practicalswift)
- #18406 add executable flag for `rpc_estimatefee.py` (theStack)
- #18420 listsinceblock block height checks (jonatack)
- #18430 ci: Only clone bitcoin-core/qa-assets when fuzzing (MarcoFalke)
- #18438 ci: Use homebrew addon on native macos (hebasto)
- #18447 Add coverage for script parse error in ParseScript (pierreN)
- #18472 Remove unsafe `BOOST_TEST_MESSAGE` (MarcoFalke)
- #18474 check that peer is connected when calling sync_* (MarcoFalke)
- #18477 ci: Use focal for fuzzers (MarcoFalke)
- #18481 add BIP37 'filterclear' test to p2p_filter.py (theStack)
- #18496 Remove redundant `sync_with_ping` after `add_p2p_connection` (jonatack)
- #18509 fuzz: Avoid running over all inputs after merging them (MarcoFalke)
- #18510 fuzz: Add CScriptNum::getint coverage (MarcoFalke)
- #18514 remove rapidcheck integration and tests (fanquake)
- #18515 Add BIP37 remote crash bug [CVE-2013-5700] test to `p2p_filter.py` (theStack)
- #18516 relax bumpfee `dust_to_fee` txsize an extra vbyte (jonatack)
- #18518 fuzz: Extend descriptor fuzz test (MarcoFalke)
- #18519 fuzz: Extend script fuzz test (MarcoFalke)
- #18521 fuzz: Add `process_messages` harness (MarcoFalke)
- #18529 Add fuzzer version of randomized prevector test (sipa)
- #18534 skip backwards compat tests if not compiled with wallet (fanquake)
- #18540 `wallet_bumpfee` assertion fixup (jonatack)
- #18543 Use one node to avoid a race due to missing sync in `rpc_signrawtransaction` (MarcoFalke)
- #18561 Properly raise FailedToStartError when rpc shutdown before warmup finished (MarcoFalke)
- #18562 ci: Run unit tests sequential once (MarcoFalke)
- #18563 Fix `unregister_all_during_call` cleanup (ryanofsky)
- #18566 Set `-use_value_profile=1` when merging fuzz inputs (MarcoFalke)
- #18757 Remove enumeration of expected deserialization exceptions in ProcessMessage(…) fuzzer (practicalswift)
- #18878 Add test for conflicted wallet tx notifications (ryanofsky)
- #18975 Remove const to work around compiler error on xenial (laanwj)
### Documentation
- #16947 Doxygen-friendly script/descriptor.h comments (ch4ot1c)
- #16983 Add detailed info about Bitcoin Core files (hebasto)
- #16986 Doxygen-friendly CuckooCache comments (ch4ot1c)
- #17022 move-only: Steps for "before major release branch-off" (MarcoFalke)
- #17026 Update bips.md for default bech32 addresses in 0.20.0 (MarcoFalke)
- #17081 Fix Makefile target in benchmarking.md (theStack)
- #17102 Add missing indexes/blockfilter/basic to doc/files.md (MarcoFalke)
- #17119 Fix broken bitcoin-cli examples (andrewtoth)
- #17134 Add switch on enum example to developer notes (hebasto)
- #17142 Update macdeploy README to include all files produced by `make deploy` (za-kk)
- #17146 github: Add warning for bug reports (laanwj)
- #17157 Added instructions for how to add an upsteam to forked repo (dannmat)
- #17159 Add a note about backporting (carnhofdaki)
- #17169 Correct function name in ReportHardwareRand() (fanquake)
- #17177 Describe log files + consistent paths in test READMEs (fjahr)
- #17239 Changed miniupnp links to https (sandakersmann)
- #17281 Add developer note on `c_str()` (laanwj)
- #17285 Bip70 removal follow-up (fjahr)
- #17286 Fix help-debug -checkpoints (ariard)
- #17309 update MSVC instructions to remove Qt OpenSSL linking (fanquake)
- #17339 Add template for good first issues (michaelfolkson)
- #17351 Fix some misspellings (RandyMcMillan)
- #17353 Add ShellCheck to lint tests dependencies (hebasto)
- #17370 Update doc/bips.md with recent changes in master (MarcoFalke)
- #17393 Added regtest config for linearize script (gr0kchain)
- #17411 Add some better examples for scripted diff (laanwj)
- #17503 Remove bitness from bitcoin-qt help message and manpage (laanwj)
- #17539 Update and improve Developer Notes (hebasto)
- #17561 Changed MiniUPnPc link to https in dependencies.md (sandakersmann)
- #17596 Change doxygen URL to doxygen.bitcoincore.org (laanwj)
- #17598 Update release process with latest changes (MarcoFalke)
- #17617 Unify unix epoch time descriptions (jonatack)
- #17637 script: Add keyserver to verify-commits readme (emilengler)
- #17648 Rename wallet-tool references to bitcoin-wallet (hel-o)
- #17688 Add "ci" prefix to CONTRIBUTING.md (hebasto)
- #17751 Use recommended shebang approach in documentation code block (hackerrdave)
- #17752 Fix directory path for secp256k1 subtree in developer-notes (hackerrdave)
- #17772 Mention PR Club in CONTRIBUTING.md (emilengler)
- #17804 Misc RPC help fixes (MarcoFalke)
- #17819 Developer notes guideline on RPCExamples addresses (jonatack)
- #17825 Update dependencies.md (hebasto)
- #17873 Add to Doxygen documentation guidelines (jonatack)
- #17907 Fix improper Doxygen inline comments (Empact)
- #17942 Improve fuzzing docs for macOS users (fjahr)
- #17945 Fix doxygen errors (Empact)
- #18025 Add missing supported rpcs to doc/descriptors.md (andrewtoth)
- #18070 Add note about `brew doctor` (givanse)
- #18125 Remove PPA note from release-process.md (fanquake)
- #18170 Minor grammatical changes and flow improvements (travinkeith)
- #18212 Add missing step in win deployment instructions (dangershony)
- #18219 Add warning against wallet.dat re-use (corollari)
- #18253 Correct spelling errors in comments (Empact)
- #18278 interfaces: Describe and follow some code conventions (ryanofsky)
- #18283 Explain rebase policy in CONTRIBUTING.md (MarcoFalke)
- #18340 Mention MAKE=gmake workaround when building on a BSD (fanquake)
- #18341 Replace remaining literal BTC with `CURRENCY_UNIT` (domob1812)
- #18342 Add fuzzing quickstart guides for libFuzzer and afl-fuzz (practicalswift)
- #18344 Fix nit in getblockchaininfo (stevenroose)
- #18379 Comment fix merkle.cpp (4d55397500)
- #18382 note the costs of fetching all pull requests (vasild)
- #18391 Update init and reduce-traffic docs for -blocksonly (glowang)
- #18464 Block-relay-only vs blocksonly (MarcoFalke)
- #18486 Explain new test logging (MarcoFalke)
- #18505 Update webchat URLs in README.md (SuriyaaKudoIsc)
- #18513 Fix git add argument (HashUnlimited)
- #18577 Correct scripted-diff example link (yahiheb)
- #18589 Fix naming of macOS SDK and clarify version (achow101)
### Miscellaneous
- #15600 lockedpool: When possible, use madvise to avoid including sensitive information in core dumps (luke-jr)
- #15934 Merge settings one place instead of five places (ryanofsky)
- #16115 On bitcoind startup, write config args to debug.log (LarryRuane)
- #16117 util: Replace boost sleep with std sleep (MarcoFalke)
- #16161 util: Fix compilation errors in support/lockedpool.cpp (jkczyz)
- #16802 scripts: In linearize, search for next position of magic bytes rather than fail (takinbo)
- #16889 Add some general std::vector utility functions (sipa)
- #17049 contrib: Bump gitian descriptors for 0.20 (MarcoFalke)
- #17052 scripts: Update `copyright_header` script to include additional files (GChuf)
- #17059 util: Simplify path argument for cblocktreedb ctor (hebasto)
- #17191 random: Remove call to `RAND_screen()` (Windows only) (fanquake)
- #17192 util: Add `check_nonfatal` and use it in src/rpc (MarcoFalke)
- #17218 Replace the LogPrint function with a macro (jkczyz)
- #17266 util: Rename decodedumptime to parseiso8601datetime (elichai)
- #17270 Feed environment data into RNG initializers (sipa)
- #17282 contrib: Remove accounts from bash completion (fanquake)
- #17293 Add assertion to randrange that input is not 0 (JeremyRubin)
- #17325 log: Fix log message for -par=1 (hebasto)
- #17329 linter: Strip trailing / in path for git-subtree-check (jnewbery)
- #17336 scripts: Search for first block file for linearize-data with some block files pruned (Rjected)
- #17361 scripts: Lint gitian descriptors with shellcheck (hebasto)
- #17482 util: Disallow network-qualified command line options (ryanofsky)
- #17507 random: mark RandAddPeriodic and SeedPeriodic as noexcept (fanquake)
- #17527 Fix CPUID subleaf iteration (sipa)
- #17604 util: Make schedulebatchpriority advisory only (fanquake)
- #17650 util: Remove unwanted fields from bitcoin-cli -getinfo (malevolent)
- #17671 script: Fixed wget call in gitian-build.py (willyko)
- #17699 Make env data logging optional (sipa)
- #17721 util: Don't allow base58 decoding of non-base58 strings. add base58 tests (practicalswift)
- #17750 util: Change getwarnings parameter to bool (jnewbery)
- #17753 util: Don't allow base32/64-decoding or parsemoney(…) on strings with embedded nul characters. add tests (practicalswift)
- #17823 scripts: Read suspicious hosts from a file instead of hardcoding (sanjaykdragon)
- #18162 util: Avoid potential uninitialized read in `formatiso8601datetime(int64_t)` by checking `gmtime_s`/`gmtime_r` return value (practicalswift)
- #18167 Fix a violation of C++ standard rules where unions are used for type-punning (TheQuantumPhysicist)
- #18225 util: Fail to parse empty string in parsemoney (MarcoFalke)
- #18270 util: Fail to parse whitespace-only strings in parsemoney(…) (instead of parsing as zero) (practicalswift)
- #18316 util: Helpexamplerpc formatting (jonatack)
- #18357 Fix missing header in sync.h (promag)
- #18412 script: Fix `script_err_sig_pushonly` error string (theStack)
- #18416 util: Limit decimal range of numbers parsescript accepts (pierreN)
- #18503 init: Replace `URL_WEBSITE` with `PACKAGE_URL` (MarcoFalke)
- #18526 Remove PID file at the very end (hebasto)
- #18553 Avoid non-trivial global constants in SHA-NI code (sipa)
- #18665 Do not expose and consider `-logthreadnames` when it does not work (hebasto)
Credits
=======
Thanks to everyone who directly contributed to this release:
- 0xb10c
- 251
- 4d55397500
- Aaron Clauson
- Adam Jonas
- Albert
- Amiti Uttarwar
- Andrew Chow
- Andrew Toth
- Anthony Towns
- Antoine Riard
- Ava Barron
- Ben Carman
- Ben Woosley
- Block Mechanic
- Brian Solon
- Bushstar
- Carl Dong
- Carnhof Daki
- Cory Fields
- Daki Carnhof
- Dan Gershony
- Daniel Kraft
- dannmat
- Danny-Scott
- darosior
- David O'Callaghan
- Dominik Spicher
- Elichai Turkel
- Emil Engler
- emu
- Fabian Jahr
- fanquake
- Filip Gospodinov
- Franck Royer
- Gastón I. Silva
- gchuf
- Gleb Naumenko
- Gloria Zhao
- glowang
- Gr0kchain
- Gregory Sanders
- hackerrdave
- Harris
- hel0
- Hennadii Stepanov
- ianliu
- Igor Cota
- James Chiang
- James O'Beirne
- Jan Beich
- Jan Sarenik
- Jeffrey Czyz
- Jeremy Rubin
- JeremyCrookshank
- Jim Posen
- John Bampton
- John L. Jegutanis
- John Newbery
- Jon Atack
- Jon Layton
- Jonas Schnelli
- João Barbosa
- Jorge Timón
- Karl-Johan Alm
- kodslav
- Larry Ruane
- Luke Dashjr
- malevolent
- MapleLaker
- marcaiaf
- MarcoFalke
- Marius Kjærstad
- Mark Erhardt
- Mark Tyneway
- Martin Erlandsson
- Martin Zumsande
- Matt Corallo
- Matt Ward
- Michael Folkson
- Michael Polzer
- Micky Yun Chan
- Neha Narula
- nijynot
- naumenkogs
- NullFunctor
- Peter Bushnell
- pierrenn
- Pieter Wuille
- practicalswift
- randymcmillan
- Rjected
- Russell Yanofsky
- Samer Afach
- Samuel Dobson
- Sanjay K
- Sebastian Falbesoner
- setpill
- Sjors Provoost
- Stefan Richter
- stefanwouldgo
- Steven Roose
- Suhas Daftuar
- Suriyaa Sundararuban
- TheCharlatan
- Tim Akinbo
- Travin Keith
- tryphe
- Vasil Dimov
- Willy Ko
- Wilson Ccasihue S
- Wladimir J. van der Laan
- Yahia Chiheb
- Yancy Ribbens
- Yusuf Sahin HAMZA
- Zakk
- Zero
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@@ -0,0 +1,158 @@
0.20.1 Release Notes
====================
Bitcoin Core version 0.20.1 is now available from:
<https://bitcoincore.org/bin/bitcoin-core-0.20.1/>
This minor release includes various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
<https://github.com/bitcoin/bitcoin/issues>
To receive security and update notifications, please subscribe to:
<https://bitcoincore.org/en/list/announcements/join/>
How to Upgrade
==============
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
or `bitcoind`/`bitcoin-qt` (on Linux).
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them. It is not recommended to use Bitcoin Core on
unsupported systems.
From Bitcoin Core 0.20.0 onwards, macOS versions earlier than 10.12 are no
longer supported. Additionally, Bitcoin Core does not yet change appearance
when macOS "dark mode" is activated.
Known Bugs
==========
The process for generating the source code release ("tarball") has changed in an
effort to make it more complete, however, there are a few regressions in
this release:
- The generated `configure` script is currently missing, and you will need to
install autotools and run `./autogen.sh` before you can run
`./configure`. This is the same as when checking out from git.
- Instead of running `make` simply, you should instead run
`BITCOIN_GENBUILD_NO_GIT=1 make`.
Notable changes
===============
Changes regarding misbehaving peers
-----------------------------------
Peers that misbehave (e.g. send us invalid blocks) are now referred to as
discouraged nodes in log output, as they're not (and weren't) strictly banned:
incoming connections are still allowed from them, but they're preferred for
eviction.
Furthermore, a few additional changes are introduced to how discouraged
addresses are treated:
- Discouraging an address does not time out automatically after 24 hours
(or the `-bantime` setting). Depending on traffic from other peers,
discouragement may time out at an indeterminate time.
- Discouragement is not persisted over restarts.
- There is no method to list discouraged addresses. They are not returned by
the `listbanned` RPC. That RPC also no longer reports the `ban_reason`
field, as `"manually added"` is the only remaining option.
- Discouragement cannot be removed with the `setban remove` RPC command.
If you need to remove a discouragement, you can remove all discouragements by
stop-starting your node.
Notification changes
--------------------
`-walletnotify` notifications are now sent for wallet transactions that are
removed from the mempool because they conflict with a new block. These
notifications were sent previously before the v0.19 release, but had been
broken since that release (bug
[#18325](https://github.com/bitcoin/bitcoin/issues/18325)).
PSBT changes
------------
PSBTs will contain both the non-witness utxo and the witness utxo for segwit
inputs in order to restore compatibility with wallet software that are now
requiring the full previous transaction for segwit inputs. The witness utxo
is still provided to maintain compatibility with software which relied on its
existence to determine whether an input was segwit.
0.20.1 change log
=================
### Mining
- #19019 Fix GBT: Restore "!segwit" and "csv" to "rules" key (luke-jr)
### P2P protocol and network code
- #19219 Replace automatic bans with discouragement filter (sipa)
### Wallet
- #19300 Handle concurrent wallet loading (promag)
- #18982 Minimal fix to restore conflicted transaction notifications (ryanofsky)
### RPC and other APIs
- #19524 Increment input value sum only once per UTXO in decodepsbt (fanquake)
- #19517 psbt: Increment input value sum only once per UTXO in decodepsbt (achow101)
- #19215 psbt: Include and allow both non_witness_utxo and witness_utxo for segwit inputs (achow101)
### GUI
- #19097 Add missing QPainterPath include (achow101)
- #19059 update Qt base translations for macOS release (fanquake)
### Build system
- #19152 improve build OS configure output (skmcontrib)
- #19536 qt, build: Fix QFileDialog for static builds (hebasto)
### Tests and QA
- #19444 Remove cached directories and associated script blocks from appveyor config (sipsorcery)
- #18640 appveyor: Remove clcache (MarcoFalke)
### Miscellaneous
- #19194 util: Don't reference errno when pthread fails (miztake)
- #18700 Fix locking on WSL using flock instead of fcntl (meshcollider)
Credits
=======
Thanks to everyone who directly contributed to this release:
- Aaron Clauson
- Andrew Chow
- fanquake
- Hennadii Stepanov
- João Barbosa
- Luke Dashjr
- MarcoFalke
- MIZUTA Takeshi
- Pieter Wuille
- Russell Yanofsky
- sachinkm77
- Samuel Dobson
- Wladimir J. van der Laan
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@@ -1,19 +1,21 @@
QT_TS = \
qt/locale/bitcoin_ach.ts \
qt/locale/bitcoin_af.ts \
qt/locale/bitcoin_am.ts \
qt/locale/bitcoin_ar.ts \
qt/locale/bitcoin_az.ts \
qt/locale/bitcoin_be.ts \
qt/locale/bitcoin_bg.ts \
qt/locale/bitcoin_bn.ts \
qt/locale/bitcoin_bs.ts \
qt/locale/bitcoin_ca.ts \
qt/locale/bitcoin_cmn.ts \
qt/locale/bitcoin_cs.ts \
qt/locale/bitcoin_cy.ts \
qt/locale/bitcoin_da.ts \
qt/locale/bitcoin_de.ts \
qt/locale/bitcoin_el.ts \
qt/locale/bitcoin_en.ts \
qt/locale/bitcoin_en_GB.ts \
qt/locale/bitcoin_eo.ts \
qt/locale/bitcoin_es.ts \
qt/locale/bitcoin_es_CL.ts \
@@ -27,6 +29,10 @@ QT_TS = \
qt/locale/bitcoin_fi.ts \
qt/locale/bitcoin_fil.ts \
qt/locale/bitcoin_fr.ts \
qt/locale/bitcoin_ga.ts \
qt/locale/bitcoin_gd.ts \
qt/locale/bitcoin_gl_ES.ts \
qt/locale/bitcoin_gu.ts \
qt/locale/bitcoin_he.ts \
qt/locale/bitcoin_hi.ts \
qt/locale/bitcoin_hr.ts \
@@ -37,6 +43,7 @@ QT_TS = \
qt/locale/bitcoin_ja.ts \
qt/locale/bitcoin_ka.ts \
qt/locale/bitcoin_kk.ts \
qt/locale/bitcoin_kl.ts \
qt/locale/bitcoin_km.ts \
qt/locale/bitcoin_ko.ts \
qt/locale/bitcoin_ku_IQ.ts \
@@ -53,12 +60,14 @@ QT_TS = \
qt/locale/bitcoin_nb.ts \
qt/locale/bitcoin_ne.ts \
qt/locale/bitcoin_nl.ts \
qt/locale/bitcoin_no.ts \
qt/locale/bitcoin_pam.ts \
qt/locale/bitcoin_pl.ts \
qt/locale/bitcoin_pt.ts \
qt/locale/bitcoin_pt_BR.ts \
qt/locale/bitcoin_ro.ts \
qt/locale/bitcoin_ru.ts \
qt/locale/bitcoin_sc.ts \
qt/locale/bitcoin_si.ts \
qt/locale/bitcoin_sk.ts \
qt/locale/bitcoin_sl.ts \
@@ -72,6 +81,7 @@ QT_TS = \
qt/locale/bitcoin_te.ts \
qt/locale/bitcoin_th.ts \
qt/locale/bitcoin_tr.ts \
qt/locale/bitcoin_ug.ts \
qt/locale/bitcoin_uk.ts \
qt/locale/bitcoin_ur.ts \
qt/locale/bitcoin_uz@Cyrl.ts \
@@ -82,4 +92,5 @@ QT_TS = \
qt/locale/bitcoin_zh.ts \
qt/locale/bitcoin_zh_CN.ts \
qt/locale/bitcoin_zh_HK.ts \
qt/locale/bitcoin_zh_TW.ts
qt/locale/bitcoin_zh_TW.ts \
qt/locale/bitcoin_zu.ts

View File

@@ -104,8 +104,6 @@ FUZZ_TARGETS = \
test/fuzz/script \
test/fuzz/script_deserialize \
test/fuzz/script_flags \
test/fuzz/script_ops \
test/fuzz/scriptnum_ops \
test/fuzz/service_deserialize \
test/fuzz/signature_checker \
test/fuzz/snapshotmetadata_deserialize \
@@ -893,17 +891,18 @@ test_fuzz_script_flags_LDADD = $(FUZZ_SUITE_LD_COMMON)
test_fuzz_script_flags_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
test_fuzz_script_flags_SOURCES = test/fuzz/script_flags.cpp
test_fuzz_script_ops_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
test_fuzz_script_ops_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
test_fuzz_script_ops_LDADD = $(FUZZ_SUITE_LD_COMMON)
test_fuzz_script_ops_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
test_fuzz_script_ops_SOURCES = test/fuzz/script_ops.cpp
# Disabled for now, as #18413 has not been backported.
# test_fuzz_script_ops_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
# test_fuzz_script_ops_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
# test_fuzz_script_ops_LDADD = $(FUZZ_SUITE_LD_COMMON)
# test_fuzz_script_ops_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
# test_fuzz_script_ops_SOURCES = test/fuzz/script_ops.cpp
test_fuzz_scriptnum_ops_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
test_fuzz_scriptnum_ops_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
test_fuzz_scriptnum_ops_LDADD = $(FUZZ_SUITE_LD_COMMON)
test_fuzz_scriptnum_ops_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
test_fuzz_scriptnum_ops_SOURCES = test/fuzz/scriptnum_ops.cpp
# test_fuzz_scriptnum_ops_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
# test_fuzz_scriptnum_ops_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
# test_fuzz_scriptnum_ops_LDADD = $(FUZZ_SUITE_LD_COMMON)
# test_fuzz_scriptnum_ops_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
# test_fuzz_scriptnum_ops_SOURCES = test/fuzz/scriptnum_ops.cpp
test_fuzz_service_deserialize_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) -DSERVICE_DESERIALIZE=1
test_fuzz_service_deserialize_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)

View File

@@ -17,13 +17,6 @@ class CSubNet;
class CAddrMan;
class CDataStream;
typedef enum BanReason
{
BanReasonUnknown = 0,
BanReasonNodeMisbehaving = 1,
BanReasonManuallyAdded = 2
} BanReason;
class CBanEntry
{
public:
@@ -31,7 +24,6 @@ public:
int nVersion;
int64_t nCreateTime;
int64_t nBanUntil;
uint8_t banReason;
CBanEntry()
{
@@ -44,31 +36,17 @@ public:
nCreateTime = nCreateTimeIn;
}
explicit CBanEntry(int64_t n_create_time_in, BanReason ban_reason_in) : CBanEntry(n_create_time_in)
SERIALIZE_METHODS(CBanEntry, obj)
{
banReason = ban_reason_in;
uint8_t ban_reason = 2; //! For backward compatibility
READWRITE(obj.nVersion, obj.nCreateTime, obj.nBanUntil, ban_reason);
}
SERIALIZE_METHODS(CBanEntry, obj) { READWRITE(obj.nVersion, obj.nCreateTime, obj.nBanUntil, obj.banReason); }
void SetNull()
{
nVersion = CBanEntry::CURRENT_VERSION;
nCreateTime = 0;
nBanUntil = 0;
banReason = BanReasonUnknown;
}
std::string banReasonToString() const
{
switch (banReason) {
case BanReasonNodeMisbehaving:
return "node misbehaving";
case BanReasonManuallyAdded:
return "manually added";
default:
return "unknown";
}
}
};

View File

@@ -68,28 +68,13 @@ void BanMan::ClearBanned()
if (m_client_interface) m_client_interface->BannedListChanged();
}
int BanMan::IsBannedLevel(CNetAddr net_addr)
bool BanMan::IsDiscouraged(const CNetAddr& net_addr)
{
// Returns the most severe level of banning that applies to this address.
// 0 - Not banned
// 1 - Automatic misbehavior ban
// 2 - Any other ban
int level = 0;
auto current_time = GetTime();
LOCK(m_cs_banned);
for (const auto& it : m_banned) {
CSubNet sub_net = it.first;
CBanEntry ban_entry = it.second;
if (current_time < ban_entry.nBanUntil && sub_net.Match(net_addr)) {
if (ban_entry.banReason != BanReasonNodeMisbehaving) return 2;
level = 1;
}
}
return level;
return m_discouraged.contains(net_addr.GetAddrBytes());
}
bool BanMan::IsBanned(CNetAddr net_addr)
bool BanMan::IsBanned(const CNetAddr& net_addr)
{
auto current_time = GetTime();
LOCK(m_cs_banned);
@@ -104,7 +89,7 @@ bool BanMan::IsBanned(CNetAddr net_addr)
return false;
}
bool BanMan::IsBanned(CSubNet sub_net)
bool BanMan::IsBanned(const CSubNet& sub_net)
{
auto current_time = GetTime();
LOCK(m_cs_banned);
@@ -118,15 +103,21 @@ bool BanMan::IsBanned(CSubNet sub_net)
return false;
}
void BanMan::Ban(const CNetAddr& net_addr, const BanReason& ban_reason, int64_t ban_time_offset, bool since_unix_epoch)
void BanMan::Ban(const CNetAddr& net_addr, int64_t ban_time_offset, bool since_unix_epoch)
{
CSubNet sub_net(net_addr);
Ban(sub_net, ban_reason, ban_time_offset, since_unix_epoch);
Ban(sub_net, ban_time_offset, since_unix_epoch);
}
void BanMan::Ban(const CSubNet& sub_net, const BanReason& ban_reason, int64_t ban_time_offset, bool since_unix_epoch)
void BanMan::Discourage(const CNetAddr& net_addr)
{
CBanEntry ban_entry(GetTime(), ban_reason);
LOCK(m_cs_banned);
m_discouraged.insert(net_addr.GetAddrBytes());
}
void BanMan::Ban(const CSubNet& sub_net, int64_t ban_time_offset, bool since_unix_epoch)
{
CBanEntry ban_entry(GetTime());
int64_t normalized_ban_time_offset = ban_time_offset;
bool normalized_since_unix_epoch = since_unix_epoch;
@@ -146,8 +137,8 @@ void BanMan::Ban(const CSubNet& sub_net, const BanReason& ban_reason, int64_t ba
}
if (m_client_interface) m_client_interface->BannedListChanged();
//store banlist to disk immediately if user requested ban
if (ban_reason == BanReasonManuallyAdded) DumpBanlist();
//store banlist to disk immediately
DumpBanlist();
}
bool BanMan::Unban(const CNetAddr& net_addr)

View File

@@ -6,6 +6,7 @@
#define BITCOIN_BANMAN_H
#include <addrdb.h>
#include <bloom.h>
#include <fs.h>
#include <net_types.h> // For banmap_t
#include <sync.h>
@@ -23,32 +24,55 @@ class CClientUIInterface;
class CNetAddr;
class CSubNet;
// Denial-of-service detection/prevention
// The idea is to detect peers that are behaving
// badly and disconnect/ban them, but do it in a
// one-coding-mistake-won't-shatter-the-entire-network
// way.
// IMPORTANT: There should be nothing I can give a
// node that it will forward on that will make that
// node's peers drop it. If there is, an attacker
// can isolate a node and/or try to split the network.
// Dropping a node for sending stuff that is invalid
// now but might be valid in a later version is also
// dangerous, because it can cause a network split
// between nodes running old code and nodes running
// new code.
// Banman manages two related but distinct concepts:
//
// 1. Banning. This is configured manually by the user, through the setban RPC.
// If an address or subnet is banned, we never accept incoming connections from
// it and never create outgoing connections to it. We won't gossip its address
// to other peers in addr messages. Banned addresses and subnets are stored to
// banlist.dat on shutdown and reloaded on startup. Banning can be used to
// prevent connections with spy nodes or other griefers.
//
// 2. Discouragement. If a peer misbehaves enough (see Misbehaving() in
// net_processing.cpp), we'll mark that address as discouraged. We still allow
// incoming connections from them, but they're preferred for eviction when
// we receive new incoming connections. We never make outgoing connections to
// them, and do not gossip their address to other peers. This is implemented as
// a bloom filter. We can (probabilistically) test for membership, but can't
// list all discouraged addresses or unmark them as discouraged. Discouragement
// can prevent our limited connection slots being used up by incompatible
// or broken peers.
//
// Neither banning nor discouragement are protections against denial-of-service
// attacks, since if an attacker has a way to waste our resources and we
// disconnect from them and ban that address, it's trivial for them to
// reconnect from another IP address.
//
// Attempting to automatically disconnect or ban any class of peer carries the
// risk of splitting the network. For example, if we banned/disconnected for a
// transaction that fails a policy check and a future version changes the
// policy check so the transaction is accepted, then that transaction could
// cause the network to split between old nodes and new nodes.
class BanMan
{
public:
~BanMan();
BanMan(fs::path ban_file, CClientUIInterface* client_interface, int64_t default_ban_time);
void Ban(const CNetAddr& net_addr, const BanReason& ban_reason, int64_t ban_time_offset = 0, bool since_unix_epoch = false);
void Ban(const CSubNet& sub_net, const BanReason& ban_reason, int64_t ban_time_offset = 0, bool since_unix_epoch = false);
void Ban(const CNetAddr& net_addr, int64_t ban_time_offset = 0, bool since_unix_epoch = false);
void Ban(const CSubNet& sub_net, int64_t ban_time_offset = 0, bool since_unix_epoch = false);
void Discourage(const CNetAddr& net_addr);
void ClearBanned();
int IsBannedLevel(CNetAddr net_addr);
bool IsBanned(CNetAddr net_addr);
bool IsBanned(CSubNet sub_net);
//! Return whether net_addr is banned
bool IsBanned(const CNetAddr& net_addr);
//! Return whether sub_net is exactly banned
bool IsBanned(const CSubNet& sub_net);
//! Return whether net_addr is discouraged.
bool IsDiscouraged(const CNetAddr& net_addr);
bool Unban(const CNetAddr& net_addr);
bool Unban(const CSubNet& sub_net);
void GetBanned(banmap_t& banmap);
@@ -68,6 +92,7 @@ private:
CClientUIInterface* m_client_interface = nullptr;
CBanDB m_ban_db;
const int64_t m_default_ban_time;
CRollingBloomFilter m_discouraged GUARDED_BY(m_cs_banned) {50000, 0.000001};
};
#endif

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2017 Pieter Wuille
// Copyright (c) 2017, 2021 Pieter Wuille
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -7,15 +7,18 @@
#include <assert.h>
namespace bech32
{
namespace
{
typedef std::vector<uint8_t> data;
/** The Bech32 character set for encoding. */
/** The Bech32 and Bech32m character set for encoding. */
const char* CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
/** The Bech32 character set for decoding. */
/** The Bech32 and Bech32m character set for decoding. */
const int8_t CHARSET_REV[128] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -27,6 +30,12 @@ const int8_t CHARSET_REV[128] = {
1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1
};
/* Determine the final constant to use for the specified encoding. */
uint32_t EncodingConstant(Encoding encoding) {
assert(encoding == Encoding::BECH32 || encoding == Encoding::BECH32M);
return encoding == Encoding::BECH32 ? 1 : 0x2bc830a3;
}
/** This function will compute what 6 5-bit values to XOR into the last 6 input values, in order to
* make the checksum 0. These 6 values are packed together in a single 30-bit integer. The higher
* bits correspond to earlier values. */
@@ -111,21 +120,24 @@ data ExpandHRP(const std::string& hrp)
}
/** Verify a checksum. */
bool VerifyChecksum(const std::string& hrp, const data& values)
Encoding VerifyChecksum(const std::string& hrp, const data& values)
{
// PolyMod computes what value to xor into the final values to make the checksum 0. However,
// if we required that the checksum was 0, it would be the case that appending a 0 to a valid
// list of values would result in a new valid list. For that reason, Bech32 requires the
// resulting checksum to be 1 instead.
return PolyMod(Cat(ExpandHRP(hrp), values)) == 1;
// resulting checksum to be 1 instead. In Bech32m, this constant was amended.
const uint32_t check = PolyMod(Cat(ExpandHRP(hrp), values));
if (check == EncodingConstant(Encoding::BECH32)) return Encoding::BECH32;
if (check == EncodingConstant(Encoding::BECH32M)) return Encoding::BECH32M;
return Encoding::INVALID;
}
/** Create a checksum. */
data CreateChecksum(const std::string& hrp, const data& values)
data CreateChecksum(Encoding encoding, const std::string& hrp, const data& values)
{
data enc = Cat(ExpandHRP(hrp), values);
enc.resize(enc.size() + 6); // Append 6 zeroes
uint32_t mod = PolyMod(enc) ^ 1; // Determine what to XOR into those 6 zeroes.
uint32_t mod = PolyMod(enc) ^ EncodingConstant(encoding); // Determine what to XOR into those 6 zeroes.
data ret(6);
for (size_t i = 0; i < 6; ++i) {
// Convert the 5-bit groups in mod to checksum values.
@@ -136,16 +148,13 @@ data CreateChecksum(const std::string& hrp, const data& values)
} // namespace
namespace bech32
{
/** Encode a Bech32 string. */
std::string Encode(const std::string& hrp, const data& values) {
// First ensure that the HRP is all lowercase. BIP-173 requires an encoder
// to return a lowercase Bech32 string, but if given an uppercase HRP, the
/** Encode a Bech32 or Bech32m string. */
std::string Encode(Encoding encoding, const std::string& hrp, const data& values) {
// First ensure that the HRP is all lowercase. BIP-173 and BIP350 require an encoder
// to return a lowercase Bech32/Bech32m string, but if given an uppercase HRP, the
// result will always be invalid.
for (const char& c : hrp) assert(c < 'A' || c > 'Z');
data checksum = CreateChecksum(hrp, values);
data checksum = CreateChecksum(encoding, hrp, values);
data combined = Cat(values, checksum);
std::string ret = hrp + '1';
ret.reserve(ret.size() + combined.size());
@@ -155,8 +164,8 @@ std::string Encode(const std::string& hrp, const data& values) {
return ret;
}
/** Decode a Bech32 string. */
std::pair<std::string, data> Decode(const std::string& str) {
/** Decode a Bech32 or Bech32m string. */
DecodeResult Decode(const std::string& str) {
bool lower = false, upper = false;
for (size_t i = 0; i < str.size(); ++i) {
unsigned char c = str[i];
@@ -183,10 +192,9 @@ std::pair<std::string, data> Decode(const std::string& str) {
for (size_t i = 0; i < pos; ++i) {
hrp += LowerCase(str[i]);
}
if (!VerifyChecksum(hrp, values)) {
return {};
}
return {hrp, data(values.begin(), values.end() - 6)};
Encoding result = VerifyChecksum(hrp, values);
if (result == Encoding::INVALID) return {};
return {result, std::move(hrp), data(values.begin(), values.end() - 6)};
}
} // namespace bech32

View File

@@ -1,13 +1,14 @@
// Copyright (c) 2017 Pieter Wuille
// Copyright (c) 2017, 2021 Pieter Wuille
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
// Bech32 is a string encoding format used in newer address types.
// The output consists of a human-readable part (alphanumeric), a
// separator character (1), and a base32 data section, the last
// 6 characters of which are a checksum.
// Bech32 and Bech32m are string encoding formats used in newer
// address types. The outputs consist of a human-readable part
// (alphanumeric), a separator character (1), and a base32 data
// section, the last 6 characters of which are a checksum. The
// module is namespaced under bech32 for historical reasons.
//
// For more information, see BIP 173.
// For more information, see BIP 173 and BIP 350.
#ifndef BITCOIN_BECH32_H
#define BITCOIN_BECH32_H
@@ -19,11 +20,29 @@
namespace bech32
{
/** Encode a Bech32 string. If hrp contains uppercase characters, this will cause an assertion error. */
std::string Encode(const std::string& hrp, const std::vector<uint8_t>& values);
enum class Encoding {
INVALID, //!< Failed decoding
/** Decode a Bech32 string. Returns (hrp, data). Empty hrp means failure. */
std::pair<std::string, std::vector<uint8_t>> Decode(const std::string& str);
BECH32, //!< Bech32 encoding as defined in BIP173
BECH32M, //!< Bech32m encoding as defined in BIP350
};
/** Encode a Bech32 or Bech32m string. If hrp contains uppercase characters, this will cause an
* assertion error. Encoding must be one of BECH32 or BECH32M. */
std::string Encode(Encoding encoding, const std::string& hrp, const std::vector<uint8_t>& values);
struct DecodeResult
{
Encoding encoding; //!< What encoding was detected in the result; Encoding::INVALID if failed.
std::string hrp; //!< The human readable part
std::vector<uint8_t> data; //!< The payload (excluding checksum)
DecodeResult() : encoding(Encoding::INVALID) {}
DecodeResult(Encoding enc, std::string&& h, std::vector<uint8_t>&& d) : encoding(enc), hrp(std::move(h)), data(std::move(d)) {}
};
/** Decode a Bech32 or Bech32m string. */
DecodeResult Decode(const std::string& str);
} // namespace bech32

View File

@@ -18,7 +18,7 @@ static void Bech32Encode(benchmark::State& state)
tmp.reserve(1 + 32 * 8 / 5);
ConvertBits<8, 5, true>([&](unsigned char c) { tmp.push_back(c); }, v.begin(), v.end());
while (state.KeepRunning()) {
bech32::Encode("bc", tmp);
bech32::Encode(bech32::Encoding::BECH32, "bc", tmp);
}
}

View File

@@ -545,11 +545,19 @@ static int CommandLineRPC(int argc, char *argv[])
return nRet;
}
int main(int argc, char* argv[])
{
#ifdef WIN32
// Export main() and ensure working ASLR on Windows.
// Exporting a symbol will prevent the linker from stripping
// the .reloc section from the binary, which is a requirement
// for ASLR. This is a temporary workaround until a fixed
// version of binutils is used for releases.
__declspec(dllexport) int main(int argc, char* argv[])
{
util::WinCmdLineArgs winArgs;
std::tie(argc, argv) = winArgs.get();
#else
int main(int argc, char* argv[])
{
#endif
SetupEnvironment();
if (!SetupNetworking()) {

View File

@@ -26,7 +26,8 @@ enum class TxValidationResult {
* is uninteresting.
*/
TX_RECENT_CONSENSUS_CHANGE,
TX_NOT_STANDARD, //!< didn't meet our local policy rules
TX_INPUTS_NOT_STANDARD, //!< inputs (covered by txid) failed policy rules
TX_NOT_STANDARD, //!< otherwise didn't meet our local policy rules
TX_MISSING_INPUTS, //!< transaction was missing some of its inputs
TX_PREMATURE_SPEND, //!< transaction spends a coinbase too early, or violates locktime/sequence locks
/**

View File

@@ -11,13 +11,11 @@
#include <stdint.h>
#include <immintrin.h>
namespace {
const __m128i MASK = _mm_set_epi64x(0x0c0d0e0f08090a0bULL, 0x0405060700010203ULL);
const __m128i INIT0 = _mm_set_epi64x(0x6a09e667bb67ae85ull, 0x510e527f9b05688cull);
const __m128i INIT1 = _mm_set_epi64x(0x3c6ef372a54ff53aull, 0x1f83d9ab5be0cd19ull);
alignas(__m128i) const uint8_t MASK[16] = {0x03, 0x02, 0x01, 0x00, 0x07, 0x06, 0x05, 0x04, 0x0b, 0x0a, 0x09, 0x08, 0x0f, 0x0e, 0x0d, 0x0c};
alignas(__m128i) const uint8_t INIT0[16] = {0x8c, 0x68, 0x05, 0x9b, 0x7f, 0x52, 0x0e, 0x51, 0x85, 0xae, 0x67, 0xbb, 0x67, 0xe6, 0x09, 0x6a};
alignas(__m128i) const uint8_t INIT1[16] = {0x19, 0xcd, 0xe0, 0x5b, 0xab, 0xd9, 0x83, 0x1f, 0x3a, 0xf5, 0x4f, 0xa5, 0x72, 0xf3, 0x6e, 0x3c};
void inline __attribute__((always_inline)) QuadRound(__m128i& state0, __m128i& state1, uint64_t k1, uint64_t k0)
{
@@ -67,12 +65,12 @@ void inline __attribute__((always_inline)) Unshuffle(__m128i& s0, __m128i& s1)
__m128i inline __attribute__((always_inline)) Load(const unsigned char* in)
{
return _mm_shuffle_epi8(_mm_loadu_si128((const __m128i*)in), MASK);
return _mm_shuffle_epi8(_mm_loadu_si128((const __m128i*)in), _mm_load_si128((const __m128i*)MASK));
}
void inline __attribute__((always_inline)) Save(unsigned char* out, __m128i s)
{
_mm_storeu_si128((__m128i*)out, _mm_shuffle_epi8(s, MASK));
_mm_storeu_si128((__m128i*)out, _mm_shuffle_epi8(s, _mm_load_si128((const __m128i*)MASK)));
}
}
@@ -149,8 +147,8 @@ void Transform_2way(unsigned char* out, const unsigned char* in)
__m128i bm0, bm1, bm2, bm3, bs0, bs1, bso0, bso1;
/* Transform 1 */
bs0 = as0 = INIT0;
bs1 = as1 = INIT1;
bs0 = as0 = _mm_load_si128((const __m128i*)INIT0);
bs1 = as1 = _mm_load_si128((const __m128i*)INIT1);
am0 = Load(in);
bm0 = Load(in + 64);
QuadRound(as0, as1, am0, 0xe9b5dba5b5c0fbcfull, 0x71374491428a2f98ull);
@@ -219,10 +217,10 @@ void Transform_2way(unsigned char* out, const unsigned char* in)
ShiftMessageC(bm1, bm2, bm3);
QuadRound(as0, as1, am3, 0xc67178f2bef9A3f7ull, 0xa4506ceb90befffaull);
QuadRound(bs0, bs1, bm3, 0xc67178f2bef9A3f7ull, 0xa4506ceb90befffaull);
as0 = _mm_add_epi32(as0, INIT0);
bs0 = _mm_add_epi32(bs0, INIT0);
as1 = _mm_add_epi32(as1, INIT1);
bs1 = _mm_add_epi32(bs1, INIT1);
as0 = _mm_add_epi32(as0, _mm_load_si128((const __m128i*)INIT0));
bs0 = _mm_add_epi32(bs0, _mm_load_si128((const __m128i*)INIT0));
as1 = _mm_add_epi32(as1, _mm_load_si128((const __m128i*)INIT1));
bs1 = _mm_add_epi32(bs1, _mm_load_si128((const __m128i*)INIT1));
/* Transform 2 */
aso0 = as0;
@@ -275,8 +273,8 @@ void Transform_2way(unsigned char* out, const unsigned char* in)
bm1 = bs1;
/* Transform 3 */
bs0 = as0 = INIT0;
bs1 = as1 = INIT1;
bs0 = as0 = _mm_load_si128((const __m128i*)INIT0);
bs1 = as1 = _mm_load_si128((const __m128i*)INIT1);
QuadRound(as0, as1, am0, 0xe9b5dba5B5c0fbcfull, 0x71374491428a2f98ull);
QuadRound(bs0, bs1, bm0, 0xe9b5dba5B5c0fbcfull, 0x71374491428a2f98ull);
QuadRound(as0, as1, am1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull);
@@ -339,10 +337,10 @@ void Transform_2way(unsigned char* out, const unsigned char* in)
ShiftMessageC(bm1, bm2, bm3);
QuadRound(as0, as1, am3, 0xc67178f2bef9a3f7ull, 0xa4506ceb90befffaull);
QuadRound(bs0, bs1, bm3, 0xc67178f2bef9a3f7ull, 0xa4506ceb90befffaull);
as0 = _mm_add_epi32(as0, INIT0);
bs0 = _mm_add_epi32(bs0, INIT0);
as1 = _mm_add_epi32(as1, INIT1);
bs1 = _mm_add_epi32(bs1, INIT1);
as0 = _mm_add_epi32(as0, _mm_load_si128((const __m128i*)INIT0));
bs0 = _mm_add_epi32(bs0, _mm_load_si128((const __m128i*)INIT0));
as1 = _mm_add_epi32(as1, _mm_load_si128((const __m128i*)INIT1));
bs1 = _mm_add_epi32(bs1, _mm_load_si128((const __m128i*)INIT1));
/* Extract hash into out */
Unshuffle(as0, as1);

View File

@@ -6,6 +6,9 @@
#ifndef WIN32
#include <fcntl.h>
#include <string>
#include <sys/file.h>
#include <sys/utsname.h>
#else
#ifndef NOMINMAX
#define NOMINMAX
@@ -47,20 +50,38 @@ FileLock::~FileLock()
}
}
static bool IsWSL()
{
struct utsname uname_data;
return uname(&uname_data) == 0 && std::string(uname_data.version).find("Microsoft") != std::string::npos;
}
bool FileLock::TryLock()
{
if (fd == -1) {
return false;
}
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(fd, F_SETLK, &lock) == -1) {
reason = GetErrorReason();
return false;
// Exclusive file locking is broken on WSL using fcntl (issue #18622)
// This workaround can be removed once the bug on WSL is fixed
static const bool is_wsl = IsWSL();
if (is_wsl) {
if (flock(fd, LOCK_EX | LOCK_NB) == -1) {
reason = GetErrorReason();
return false;
}
} else {
struct flock lock;
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(fd, F_SETLK, &lock) == -1) {
reason = GetErrorReason();
return false;
}
}
return true;
}
#else

View File

@@ -49,6 +49,7 @@
#include <ui_interface.h>
#include <util/asmap.h>
#include <util/moneystr.h>
#include <util/string.h>
#include <util/system.h>
#include <util/threadnames.h>
#include <util/translation.h>
@@ -422,8 +423,8 @@ void SetupServerArgs()
gArgs.AddArg("-addnode=<ip>", "Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info). This option can be specified multiple times to add multiple nodes.", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
gArgs.AddArg("-asmap=<file>", strprintf("Specify asn mapping used for bucketing of the peers (default: %s). Relative paths will be prefixed by the net-specific datadir location.", DEFAULT_ASMAP_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-banscore=<n>", strprintf("Threshold for disconnecting misbehaving peers (default: %u)", DEFAULT_BANSCORE_THRESHOLD), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-bantime=<n>", strprintf("Number of seconds to keep misbehaving peers from reconnecting (default: %u)", DEFAULT_MISBEHAVING_BANTIME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-banscore=<n>", strprintf("Threshold for disconnecting and discouraging misbehaving peers (default: %u)", DEFAULT_BANSCORE_THRESHOLD), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-bantime=<n>", strprintf("Default duration (in seconds) of manually configured bans (default: %u)", DEFAULT_MISBEHAVING_BANTIME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-bind=<addr>", "Bind to given address and always listen on it. Use [host]:port notation for IPv6", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
gArgs.AddArg("-connect=<ip>", "Connect only to the specified node; -noconnect disables automatic connections (the rules for this peer are the same as for -addnode). This option can be specified multiple times to connect to multiple nodes.", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
gArgs.AddArg("-discover", "Discover own IP addresses (default: 1 when listening and no -externalip or -proxy)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
@@ -460,11 +461,7 @@ void SetupServerArgs()
hidden_args.emplace_back("-upnp");
#endif
gArgs.AddArg("-whitebind=<[permissions@]addr>", "Bind to given address and whitelist peers connecting to it. "
"Use [host]:port notation for IPv6. Allowed permissions are bloomfilter (allow requesting BIP37 filtered blocks and transactions), "
"noban (do not ban for misbehavior), "
"forcerelay (relay transactions that are already in the mempool; implies relay), "
"relay (relay even in -blocksonly mode), "
"and mempool (allow requesting BIP35 mempool contents). "
"Use [host]:port notation for IPv6. Allowed permissions: " + Join(NET_PERMISSIONS_DOC, ", ") + ". "
"Specify multiple permissions separated by commas (default: noban,mempool,relay). Can be specified multiple times.", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-whitelist=<[permissions@]IP address or network>", "Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or "
@@ -519,7 +516,11 @@ void SetupServerArgs()
gArgs.AddArg("-debugexclude=<category>", strprintf("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."), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-logips", strprintf("Include IP addresses in debug output (default: %u)", DEFAULT_LOGIPS), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-logtimestamps", strprintf("Prepend debug output with timestamp (default: %u)", DEFAULT_LOGTIMESTAMPS), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
#ifdef HAVE_THREAD_LOCAL
gArgs.AddArg("-logthreadnames", strprintf("Prepend debug output with name of the originating thread (only available on platforms supporting thread_local) (default: %u)", DEFAULT_LOGTHREADNAMES), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
#else
hidden_args.emplace_back("-logthreadnames");
#endif
gArgs.AddArg("-logtimemicros", strprintf("Add microsecond precision to debug timestamps (default: %u)", DEFAULT_LOGTIMEMICROS), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-mocktime=<n>", "Replace actual time with " + UNIX_EPOCH_TIME + " (default: 0)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-maxsigcachesize=<n>", strprintf("Limit sum of signature cache and script execution cache sizes to <n> MiB (default: %u)", DEFAULT_MAX_SIG_CACHE_SIZE), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
@@ -851,7 +852,9 @@ void InitLogging()
LogInstance().m_print_to_console = gArgs.GetBoolArg("-printtoconsole", !gArgs.GetBoolArg("-daemon", false));
LogInstance().m_log_timestamps = gArgs.GetBoolArg("-logtimestamps", DEFAULT_LOGTIMESTAMPS);
LogInstance().m_log_time_micros = gArgs.GetBoolArg("-logtimemicros", DEFAULT_LOGTIMEMICROS);
#ifdef HAVE_THREAD_LOCAL
LogInstance().m_log_threadnames = gArgs.GetBoolArg("-logthreadnames", DEFAULT_LOGTHREADNAMES);
#endif
fLogIPs = gArgs.GetBoolArg("-logips", DEFAULT_LOGIPS);

View File

@@ -158,9 +158,9 @@ public:
{
m_notifications->transactionAddedToMempool(tx);
}
void TransactionRemovedFromMempool(const CTransactionRef& tx) override
void TransactionRemovedFromMempool(const CTransactionRef& tx, MemPoolRemovalReason reason) override
{
m_notifications->transactionRemovedFromMempool(tx);
m_notifications->transactionRemovedFromMempool(tx, reason);
}
void BlockConnected(const std::shared_ptr<const CBlock>& block, const CBlockIndex* index) override
{

View File

@@ -20,6 +20,7 @@ class CRPCCommand;
class CScheduler;
class Coin;
class uint256;
enum class MemPoolRemovalReason;
enum class RBFTransactionState;
struct CBlockLocator;
struct FeeCalculation;
@@ -221,7 +222,7 @@ public:
public:
virtual ~Notifications() {}
virtual void transactionAddedToMempool(const CTransactionRef& tx) {}
virtual void transactionRemovedFromMempool(const CTransactionRef& ptx) {}
virtual void transactionRemovedFromMempool(const CTransactionRef& tx, MemPoolRemovalReason reason) {}
virtual void blockConnected(const CBlock& block, int height) {}
virtual void blockDisconnected(const CBlock& block, int height) {}
virtual void updatedBlockTip() {}

View File

@@ -136,10 +136,10 @@ public:
}
return false;
}
bool ban(const CNetAddr& net_addr, BanReason reason, int64_t ban_time_offset) override
bool ban(const CNetAddr& net_addr, int64_t ban_time_offset) override
{
if (m_context.banman) {
m_context.banman->Ban(net_addr, reason, ban_time_offset);
m_context.banman->Ban(net_addr, ban_time_offset);
return true;
}
return false;

View File

@@ -118,7 +118,7 @@ public:
virtual bool getBanned(banmap_t& banmap) = 0;
//! Ban node.
virtual bool ban(const CNetAddr& net_addr, BanReason reason, int64_t ban_time_offset) = 0;
virtual bool ban(const CNetAddr& net_addr, int64_t ban_time_offset) = 0;
//! Unban node.
virtual bool unban(const CSubNet& ip) = 0;

View File

@@ -44,7 +44,7 @@ public:
std::vector<unsigned char> data = {0};
data.reserve(33);
ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, id.begin(), id.end());
return bech32::Encode(m_params.Bech32HRP(), data);
return bech32::Encode(bech32::Encoding::BECH32, m_params.Bech32HRP(), data);
}
std::string operator()(const WitnessV0ScriptHash& id) const
@@ -52,7 +52,7 @@ public:
std::vector<unsigned char> data = {0};
data.reserve(53);
ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, id.begin(), id.end());
return bech32::Encode(m_params.Bech32HRP(), data);
return bech32::Encode(bech32::Encoding::BECH32, m_params.Bech32HRP(), data);
}
std::string operator()(const WitnessUnknown& id) const
@@ -63,7 +63,7 @@ public:
std::vector<unsigned char> data = {(unsigned char)id.version};
data.reserve(1 + (id.length * 8 + 4) / 5);
ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, id.program, id.program + id.length);
return bech32::Encode(m_params.Bech32HRP(), data);
return bech32::Encode(bech32::Encoding::BECH32M, m_params.Bech32HRP(), data);
}
std::string operator()(const CNoDestination& no) const { return {}; }
@@ -91,13 +91,19 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
}
}
data.clear();
auto bech = bech32::Decode(str);
if (bech.second.size() > 0 && bech.first == params.Bech32HRP()) {
const auto dec = bech32::Decode(str);
if ((dec.encoding == bech32::Encoding::BECH32 || dec.encoding == bech32::Encoding::BECH32M) && dec.data.size() > 0 && dec.hrp == params.Bech32HRP()) {
// Bech32 decoding
int version = bech.second[0]; // The first 5 bit symbol is the witness version (0-16)
int version = dec.data[0]; // The first 5 bit symbol is the witness version (0-16)
if (version == 0 && dec.encoding != bech32::Encoding::BECH32) {
return CNoDestination();
}
if (version != 0 && dec.encoding != bech32::Encoding::BECH32M) {
return CNoDestination();
}
// The rest of the symbols are converted witness program bytes.
data.reserve(((bech.second.size() - 1) * 5) / 8);
if (ConvertBits<5, 8, false>([&](unsigned char c) { data.push_back(c); }, bech.second.begin() + 1, bech.second.end())) {
data.reserve(((dec.data.size() - 1) * 5) / 8);
if (ConvertBits<5, 8, false>([&](unsigned char c) { data.push_back(c); }, dec.data.begin() + 1, dec.data.end())) {
if (version == 0) {
{
WitnessV0KeyHash keyid;

View File

@@ -996,17 +996,24 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
// on all platforms. Set it again here just to be sure.
SetSocketNoDelay(hSocket);
int bannedlevel = m_banman ? m_banman->IsBannedLevel(addr) : 0;
// Don't accept connections from banned peers, but if our inbound slots aren't almost full, accept
// if the only banning reason was an automatic misbehavior ban.
if (!NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_NOBAN) && bannedlevel > ((nInbound + 1 < nMaxInbound) ? 1 : 0))
// Don't accept connections from banned peers.
bool banned = m_banman->IsBanned(addr);
if (!NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_NOBAN) && banned)
{
LogPrint(BCLog::NET, "connection from %s dropped (banned)\n", addr.ToString());
CloseSocket(hSocket);
return;
}
// Only accept connections from discouraged peers if our inbound slots aren't (almost) full.
bool discouraged = m_banman->IsDiscouraged(addr);
if (!NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_NOBAN) && nInbound + 1 >= nMaxInbound && discouraged)
{
LogPrint(BCLog::NET, "connection from %s dropped (discouraged)\n", addr.ToString());
CloseSocket(hSocket);
return;
}
if (nInbound >= nMaxInbound)
{
if (!AttemptToEvictConnection()) {
@@ -1030,7 +1037,7 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
pnode->m_permissionFlags = permissionFlags;
// If this flag is present, the user probably expect that RPC and QT report it as whitelisted (backward compatibility)
pnode->m_legacyWhitelisted = legacyWhitelisted;
pnode->m_prefer_evict = bannedlevel > 0;
pnode->m_prefer_evict = discouraged;
m_msgproc->InitializeNode(pnode);
LogPrint(BCLog::NET, "connection from %s accepted\n", addr.ToString());
@@ -1987,10 +1994,10 @@ void CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai
return;
}
if (!pszDest) {
if (IsLocal(addrConnect) ||
FindNode(static_cast<CNetAddr>(addrConnect)) || (m_banman && m_banman->IsBanned(addrConnect)) ||
FindNode(addrConnect.ToStringIPPort()))
bool banned_or_discouraged = m_banman && (m_banman->IsDiscouraged(addrConnect) || m_banman->IsBanned(addrConnect));
if (IsLocal(addrConnect) || FindNode(static_cast<CNetAddr>(addrConnect)) || banned_or_discouraged || FindNode(addrConnect.ToStringIPPort())) {
return;
}
} else if (FindNode(std::string(pszDest)))
return;

View File

@@ -8,6 +8,14 @@
#include <util/system.h>
#include <util/translation.h>
const std::vector<std::string> NET_PERMISSIONS_DOC{
"bloomfilter (allow requesting BIP37 filtered blocks and transactions)",
"noban (do not ban for misbehavior)",
"forcerelay (relay transactions that are already in the mempool; implies relay)",
"relay (relay even in -blocksonly mode)",
"mempool (allow requesting BIP35 mempool contents)",
};
// The parse the following format "perm1,perm2@xxxxxx"
bool TryParsePermissionFlags(const std::string str, NetPermissionFlags& output, size_t& readen, std::string& error)
{

View File

@@ -2,12 +2,16 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <netaddress.h>
#include <string>
#include <vector>
#include <netaddress.h>
#ifndef BITCOIN_NET_PERMISSIONS_H
#define BITCOIN_NET_PERMISSIONS_H
extern const std::vector<std::string> NET_PERMISSIONS_DOC;
enum NetPermissionFlags
{
PF_NONE = 0,
@@ -18,7 +22,7 @@ enum NetPermissionFlags
// Always relay transactions from this peer, even if already in mempool
// Keep parameter interaction: forcerelay implies relay
PF_FORCERELAY = (1U << 2) | PF_RELAY,
// Can't be banned for misbehavior
// Can't be banned/disconnected/discouraged for misbehavior
PF_NOBAN = (1U << 4),
// Can query the mempool
PF_MEMPOOL = (1U << 5),
@@ -27,6 +31,7 @@ enum NetPermissionFlags
PF_ISIMPLICIT = (1U << 31),
PF_ALL = PF_BLOOMFILTER | PF_FORCERELAY | PF_RELAY | PF_NOBAN | PF_MEMPOOL,
};
class NetPermissions
{
public:
@@ -45,6 +50,7 @@ public:
flags = static_cast<NetPermissionFlags>(flags & ~f);
}
};
class NetWhitebindPermissions : public NetPermissions
{
public:

View File

@@ -215,8 +215,8 @@ struct CNodeState {
bool fCurrentlyConnected;
//! Accumulated misbehaviour score for this peer.
int nMisbehavior;
//! Whether this peer should be disconnected and banned (unless whitelisted).
bool fShouldBan;
//! Whether this peer should be disconnected and marked as discouraged (unless whitelisted with noban).
bool m_should_discourage;
//! String name of this peer (debugging/logging purposes).
const std::string name;
//! The best known block we know this peer has announced.
@@ -367,7 +367,7 @@ struct CNodeState {
{
fCurrentlyConnected = false;
nMisbehavior = 0;
fShouldBan = false;
m_should_discourage = false;
pindexBestKnownBlock = nullptr;
hashLastUnknownBlock.SetNull();
pindexLastCommonBlock = nullptr;
@@ -963,7 +963,7 @@ unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans)
}
/**
* Mark a misbehaving peer to be banned depending upon the value of `-banscore`.
* Increment peer's misbehavior score. If the new value surpasses banscore (specified on startup or by default), mark node to be discouraged, meaning the peer might be disconnected & added to the discouragement filter.
*/
void Misbehaving(NodeId pnode, int howmuch, const std::string& message) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
{
@@ -979,14 +979,14 @@ void Misbehaving(NodeId pnode, int howmuch, const std::string& message) EXCLUSIV
std::string message_prefixed = message.empty() ? "" : (": " + message);
if (state->nMisbehavior >= banscore && state->nMisbehavior - howmuch < banscore)
{
LogPrint(BCLog::NET, "%s: %s peer=%d (%d -> %d) BAN THRESHOLD EXCEEDED%s\n", __func__, state->name, pnode, state->nMisbehavior-howmuch, state->nMisbehavior, message_prefixed);
state->fShouldBan = true;
LogPrint(BCLog::NET, "%s: %s peer=%d (%d -> %d) DISCOURAGE THRESHOLD EXCEEDED%s\n", __func__, state->name, pnode, state->nMisbehavior-howmuch, state->nMisbehavior, message_prefixed);
state->m_should_discourage = true;
} else
LogPrint(BCLog::NET, "%s: %s peer=%d (%d -> %d)%s\n", __func__, state->name, pnode, state->nMisbehavior-howmuch, state->nMisbehavior, message_prefixed);
}
/**
* Potentially ban a node based on the contents of a BlockValidationState object
* Potentially mark a node discouraged based on the contents of a BlockValidationState object
*
* @param[in] via_compact_block this bool is passed in because net_processing should
* punish peers differently depending on whether the data was provided in a compact
@@ -1016,7 +1016,7 @@ static bool MaybePunishNodeForBlock(NodeId nodeid, const BlockValidationState& s
break;
}
// Ban outbound (but not inbound) peers if on an invalid chain.
// Discourage outbound (but not inbound) peers if on an invalid chain.
// Exempt HB compact block peers and manual connections.
if (!via_compact_block && !node_state->m_is_inbound && !node_state->m_is_manual_connection) {
Misbehaving(nodeid, 100, message);
@@ -1051,7 +1051,7 @@ static bool MaybePunishNodeForBlock(NodeId nodeid, const BlockValidationState& s
}
/**
* Potentially ban a node based on the contents of a TxValidationState object
* Potentially disconnect and discourage a node based on the contents of a TxValidationState object
*
* @return Returns true if the peer was punished (probably disconnected)
*/
@@ -1069,6 +1069,7 @@ static bool MaybePunishNodeForTx(NodeId nodeid, const TxValidationState& state,
}
// Conflicting (but not necessarily invalid) data or different policy:
case TxValidationResult::TX_RECENT_CONSENSUS_CHANGE:
case TxValidationResult::TX_INPUTS_NOT_STANDARD:
case TxValidationResult::TX_NOT_STANDARD:
case TxValidationResult::TX_MISSING_INPUTS:
case TxValidationResult::TX_PREMATURE_SPEND:
@@ -1278,7 +1279,7 @@ void PeerLogicValidation::UpdatedBlockTip(const CBlockIndex *pindexNew, const CB
}
/**
* Handle invalid block rejection and consequent peer banning, maintain which
* Handle invalid block rejection and consequent peer discouragement, maintain which
* peers announce compact blocks.
*/
void PeerLogicValidation::BlockChecked(const CBlock& block, const BlockValidationState& state) {
@@ -1564,26 +1565,32 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
std::vector<CInv> vNotFound;
const CNetMsgMaker msgMaker(pfrom->GetSendVersion());
// Note that if we receive a getdata for a MSG_TX or MSG_WITNESS_TX from a
// block-relay-only outbound peer, we will stop processing further getdata
// messages from this peer (likely resulting in our peer eventually
// disconnecting us).
if (pfrom->m_tx_relay != nullptr) {
// mempool entries added before this time have likely expired from mapRelay
const std::chrono::seconds longlived_mempool_time = GetTime<std::chrono::seconds>() - RELAY_TX_CACHE_TIME;
const std::chrono::seconds mempool_req = pfrom->m_tx_relay->m_last_mempool_req.load();
// mempool entries added before this time have likely expired from mapRelay
const std::chrono::seconds longlived_mempool_time = GetTime<std::chrono::seconds>() - RELAY_TX_CACHE_TIME;
// Get last mempool request time
const std::chrono::seconds mempool_req = pfrom->m_tx_relay != nullptr ? pfrom->m_tx_relay->m_last_mempool_req.load()
: std::chrono::seconds::min();
{
LOCK(cs_main);
// Process as many TX items from the front of the getdata queue as
// possible, since they're common and it's efficient to batch process
// them.
while (it != pfrom->vRecvGetData.end() && (it->type == MSG_TX || it->type == MSG_WITNESS_TX)) {
if (interruptMsgProc)
return;
// Don't bother if send buffer is too full to respond anyway
// The send buffer provides backpressure. If there's no space in
// the buffer, pause processing until the next call.
if (pfrom->fPauseSend)
break;
const CInv &inv = *it;
it++;
const CInv &inv = *it++;
if (pfrom->m_tx_relay == nullptr) {
// Ignore GETDATA requests for transactions from blocks-only peers.
continue;
}
// Send stream from relay memory
bool push = false;
@@ -1611,19 +1618,17 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
}
} // release cs_main
// Only process one BLOCK item per call, since they're uncommon and can be
// expensive to process.
if (it != pfrom->vRecvGetData.end() && !pfrom->fPauseSend) {
const CInv &inv = *it;
const CInv &inv = *it++;
if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK || inv.type == MSG_CMPCT_BLOCK || inv.type == MSG_WITNESS_BLOCK) {
it++;
ProcessGetBlockData(pfrom, chainparams, inv, connman);
}
// else: If the first item on the queue is an unknown type, we erase it
// and continue processing the queue on the next call.
}
// Unknown types in the GetData stay in vRecvGetData and block any future
// message from this peer, see vRecvGetData check in ProcessMessages().
// Depending on future p2p changes, we might either drop unknown getdata on
// the floor or disconnect the peer.
pfrom->vRecvGetData.erase(pfrom->vRecvGetData.begin(), it);
if (!vNotFound.empty()) {
@@ -1897,10 +1902,15 @@ void static ProcessOrphanTx(CConnman* connman, CTxMemPool& mempool, std::set<uin
// Has inputs but not accepted to mempool
// Probably non-standard or insufficient fee
LogPrint(BCLog::MEMPOOL, " removed orphan tx %s\n", orphanHash.ToString());
if (!orphanTx.HasWitness() && orphan_state.GetResult() != TxValidationResult::TX_WITNESS_MUTATED) {
if ((!orphanTx.HasWitness() && orphan_state.GetResult() != TxValidationResult::TX_WITNESS_MUTATED) ||
orphan_state.GetResult() == TxValidationResult::TX_INPUTS_NOT_STANDARD) {
// Do not use rejection cache for witness transactions or
// witness-stripped transactions, as they can have been malleated.
// See https://github.com/bitcoin/bitcoin/issues/8279 for details.
// However, if the transaction failed for TX_INPUTS_NOT_STANDARD,
// then we know that the witness was irrelevant to the policy
// failure, since this check depends only on the txid
// (the scriptPubKey being spent is covered by the txid).
assert(recentRejects);
recentRejects->insert(orphanHash);
}
@@ -2109,6 +2119,8 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
if (msg_type == NetMsgType::VERACK)
{
if (pfrom->fSuccessfullyConnected) return true;
pfrom->SetRecvVersion(std::min(pfrom->nVersion.load(), PROTOCOL_VERSION));
if (!pfrom->fInbound) {
@@ -2187,7 +2199,8 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
if (addr.nTime <= 100000000 || addr.nTime > nNow + 10 * 60)
addr.nTime = nNow - 5 * 24 * 60 * 60;
pfrom->AddAddressKnown(addr);
if (banman->IsBanned(addr)) continue; // Do not process banned addresses beyond remembering we received them
if (banman->IsDiscouraged(addr)) continue; // Do not process banned/discouraged addresses beyond remembering we received them
if (banman->IsBanned(addr)) continue;
bool fReachable = IsReachable(addr);
if (addr.nTime > nSince && !pfrom->fGetAddr && vAddr.size() <= 10 && addr.IsRoutable())
{
@@ -2257,6 +2270,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
uint32_t nFetchFlags = GetFetchFlags(pfrom);
const auto current_time = GetTime<std::chrono::microseconds>();
uint256* best_block{nullptr};
for (CInv &inv : vInv)
{
@@ -2273,17 +2287,14 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
if (inv.type == MSG_BLOCK) {
UpdateBlockAvailability(pfrom->GetId(), inv.hash);
if (!fAlreadyHave && !fImporting && !fReindex && !mapBlocksInFlight.count(inv.hash)) {
// We used to request the full block here, but since headers-announcements are now the
// primary method of announcement on the network, and since, in the case that a node
// fell back to inv we probably have a reorg which we should get the headers for first,
// we now only provide a getheaders response here. When we receive the headers, we will
// then ask for the blocks we need.
connman->PushMessage(pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexBestHeader), inv.hash));
LogPrint(BCLog::NET, "getheaders (%d) %s to peer=%d\n", pindexBestHeader->nHeight, inv.hash.ToString(), pfrom->GetId());
// Headers-first is the primary method of announcement on
// the network. If a node fell back to sending blocks by inv,
// it's probably for a re-org. The final block hash
// provided should be the highest, so send a getheaders and
// then fetch the blocks we need to catch up.
best_block = &inv.hash;
}
}
else
{
} else {
pfrom->AddInventoryKnown(inv);
if (fBlocksOnly) {
LogPrint(BCLog::NET, "transaction (%s) inv sent in violation of protocol, disconnecting peer=%d\n", inv.hash.ToString(), pfrom->GetId());
@@ -2294,6 +2305,12 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
}
}
}
if (best_block != nullptr) {
connman->PushMessage(pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexBestHeader), *best_block));
LogPrint(BCLog::NET, "getheaders (%d) %s to peer=%d\n", pindexBestHeader->nHeight, best_block->ToString(), pfrom->GetId());
}
return true;
}
@@ -2587,10 +2604,15 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
recentRejects->insert(tx.GetHash());
}
} else {
if (!tx.HasWitness() && state.GetResult() != TxValidationResult::TX_WITNESS_MUTATED) {
if ((!tx.HasWitness() && state.GetResult() != TxValidationResult::TX_WITNESS_MUTATED) ||
state.GetResult() == TxValidationResult::TX_INPUTS_NOT_STANDARD) {
// Do not use rejection cache for witness transactions or
// witness-stripped transactions, as they can have been malleated.
// See https://github.com/bitcoin/bitcoin/issues/8279 for details.
// However, if the transaction failed for TX_INPUTS_NOT_STANDARD,
// then we know that the witness was irrelevant to the policy
// failure, since this check depends only on the txid
// (the scriptPubKey being spent is covered by the txid).
assert(recentRejects);
recentRejects->insert(tx.GetHash());
if (RecursiveDynamicUsage(*ptx) < 100000) {
@@ -2825,7 +2847,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
// relayed before full validation (see BIP 152), so we don't want to disconnect
// the peer if the header turns out to be for an invalid block.
// Note that if a peer tries to build on an invalid chain, that
// will be detected and the peer will be banned.
// will be detected and the peer will be disconnected/discouraged.
return ProcessHeadersMessage(pfrom, connman, mempool, {cmpctblock.header}, chainparams, /*via_compact_block=*/true);
}
@@ -2911,7 +2933,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
// 3. the block is otherwise invalid (eg invalid coinbase,
// block is too big, too many legacy sigops, etc).
// So if CheckBlock failed, #3 is the only possibility.
// Under BIP 152, we don't DoS-ban unless proof of work is
// Under BIP 152, we don't discourage the peer unless proof of work is
// invalid (we don't require all the stateless checks to have
// been run). This is handled below, so just treat this as
// though the block was successfully read, and rely on the
@@ -3036,7 +3058,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
std::vector<CAddress> vAddr = connman->GetAddresses();
FastRandomContext insecure_rand;
for (const CAddress &addr : vAddr) {
if (!banman->IsBanned(addr)) {
if (!banman->IsDiscouraged(addr) && !banman->IsBanned(addr)) {
pfrom->PushAddress(addr, insecure_rand);
}
}
@@ -3247,25 +3269,26 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
return true;
}
bool PeerLogicValidation::CheckIfBanned(CNode* pnode)
bool PeerLogicValidation::MaybeDiscourageAndDisconnect(CNode* pnode)
{
AssertLockHeld(cs_main);
CNodeState &state = *State(pnode->GetId());
if (state.fShouldBan) {
state.fShouldBan = false;
if (pnode->HasPermission(PF_NOBAN))
if (state.m_should_discourage) {
state.m_should_discourage = false;
if (pnode->HasPermission(PF_NOBAN)) {
LogPrintf("Warning: not punishing whitelisted peer %s!\n", pnode->addr.ToString());
else if (pnode->m_manual_connection)
} else if (pnode->m_manual_connection) {
LogPrintf("Warning: not punishing manually-connected peer %s!\n", pnode->addr.ToString());
else if (pnode->addr.IsLocal()) {
// Disconnect but don't ban _this_ local node
LogPrintf("Warning: disconnecting but not banning local peer %s!\n", pnode->addr.ToString());
} else if (pnode->addr.IsLocal()) {
// Disconnect but don't discourage this local node
LogPrintf("Warning: disconnecting but not discouraging local peer %s!\n", pnode->addr.ToString());
pnode->fDisconnect = true;
} else {
// Disconnect and ban all nodes sharing the address
// Disconnect and discourage all nodes sharing the address
LogPrintf("Disconnecting and discouraging peer %s!\n", pnode->addr.ToString());
if (m_banman) {
m_banman->Ban(pnode->addr, BanReasonNodeMisbehaving);
m_banman->Discourage(pnode->addr);
}
connman->DisconnectNode(pnode->addr);
}
@@ -3372,7 +3395,7 @@ bool PeerLogicValidation::ProcessMessages(CNode* pfrom, std::atomic<bool>& inter
}
LOCK(cs_main);
CheckIfBanned(pfrom);
MaybeDiscourageAndDisconnect(pfrom);
return fMoreWork;
}
@@ -3575,7 +3598,7 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
if (!lockMain)
return true;
if (CheckIfBanned(pto)) return true;
if (MaybeDiscourageAndDisconnect(pto)) return true;
CNodeState &state = *State(pto->GetId());

View File

@@ -28,7 +28,7 @@ private:
BanMan* const m_banman;
CTxMemPool& m_mempool;
bool CheckIfBanned(CNode* pnode) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
bool MaybeDiscourageAndDisconnect(CNode* pnode) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
public:
PeerLogicValidation(CConnman* connman, BanMan* banman, CScheduler& scheduler, CTxMemPool& pool);

View File

@@ -90,6 +90,7 @@ class CNetAddr
uint32_t GetMappedAS(const std::vector<bool> &asmap) const;
std::vector<unsigned char> GetGroup(const std::vector<bool> &asmap) const;
std::vector<unsigned char> GetAddrBytes() const { return {std::begin(ip), std::end(ip)}; }
int GetReachabilityFrom(const CNetAddr *paddrPartner = nullptr) const;
explicit CNetAddr(const struct in6_addr& pipv6Addr, const uint32_t scope = 0);

View File

@@ -152,6 +152,8 @@ bool IsStandardTx(const CTransaction& tx, bool permit_bare_multisig, const CFeeR
* script can be anything; an attacker could use a very
* expensive-to-check-upon-redemption script like:
* DUP CHECKSIG DROP ... repeated 100 times... OP_1
*
* Note that only the non-witness portion of the transaction is checked here.
*/
bool AreInputsStandard(const CTransaction& tx, const CCoinsViewCache& mapInputs)
{
@@ -164,7 +166,11 @@ bool AreInputsStandard(const CTransaction& tx, const CCoinsViewCache& mapInputs)
std::vector<std::vector<unsigned char> > vSolutions;
txnouttype whichType = Solver(prev.scriptPubKey, vSolutions);
if (whichType == TX_NONSTANDARD) {
if (whichType == TX_NONSTANDARD || whichType == TX_WITNESS_UNKNOWN) {
// WITNESS_UNKNOWN failures are typically also caught with a policy
// flag in the script interpreter, but it can be helpful to catch
// this type of NONSTANDARD transaction earlier in transaction
// validation.
return false;
} else if (whichType == TX_SCRIPTHASH) {
std::vector<std::vector<unsigned char> > stack;

View File

@@ -35,14 +35,6 @@ bool PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt)
return true;
}
bool PartiallySignedTransaction::IsSane() const
{
for (PSBTInput input : inputs) {
if (!input.IsSane()) return false;
}
return true;
}
bool PartiallySignedTransaction::AddInput(const CTxIn& txin, PSBTInput& psbtin)
{
if (std::find(tx->vin.begin(), tx->vin.end(), txin) != tx->vin.end()) {
@@ -144,8 +136,8 @@ void PSBTInput::Merge(const PSBTInput& input)
{
if (!non_witness_utxo && input.non_witness_utxo) non_witness_utxo = input.non_witness_utxo;
if (witness_utxo.IsNull() && !input.witness_utxo.IsNull()) {
// TODO: For segwit v1, we will want to clear out the non-witness utxo when setting a witness one. For v0 and non-segwit, this is not safe
witness_utxo = input.witness_utxo;
non_witness_utxo = nullptr; // Clear out any non-witness utxo when we set a witness one.
}
partial_sigs.insert(input.partial_sigs.begin(), input.partial_sigs.end());
@@ -158,18 +150,6 @@ void PSBTInput::Merge(const PSBTInput& input)
if (final_script_witness.IsNull() && !input.final_script_witness.IsNull()) final_script_witness = input.final_script_witness;
}
bool PSBTInput::IsSane() const
{
// Cannot have both witness and non-witness utxos
if (!witness_utxo.IsNull() && non_witness_utxo) return false;
// If we have a witness_script or a scriptWitness, we must also have a witness utxo
if (!witness_script.empty() && witness_utxo.IsNull()) return false;
if (!final_script_witness.IsNull() && witness_utxo.IsNull()) return false;
return true;
}
void PSBTOutput::FillSignatureData(SignatureData& sigdata) const
{
if (!redeem_script.empty()) {
@@ -250,11 +230,6 @@ bool SignPSBTInput(const SigningProvider& provider, PartiallySignedTransaction&
bool require_witness_sig = false;
CTxOut utxo;
// Verify input sanity, which checks that at most one of witness or non-witness utxos is provided.
if (!input.IsSane()) {
return false;
}
if (input.non_witness_utxo) {
// If we're taking our information from a non-witness UTXO, verify that it matches the prevout.
COutPoint prevout = tx.vin[index].prevout;
@@ -288,10 +263,11 @@ bool SignPSBTInput(const SigningProvider& provider, PartiallySignedTransaction&
if (require_witness_sig && !sigdata.witness) return false;
input.FromSignatureData(sigdata);
// If we have a witness signature, use the smaller witness UTXO.
// If we have a witness signature, put a witness UTXO.
// TODO: For segwit v1, we should remove the non_witness_utxo
if (sigdata.witness) {
input.witness_utxo = utxo;
input.non_witness_utxo = nullptr;
// input.non_witness_utxo = nullptr;
}
// Fill in the missing info
@@ -345,10 +321,6 @@ TransactionError CombinePSBTs(PartiallySignedTransaction& out, const std::vector
return TransactionError::PSBT_MISMATCH;
}
}
if (!out.IsSane()) {
return TransactionError::INVALID_PSBT;
}
return TransactionError::OK;
}

View File

@@ -58,18 +58,17 @@ struct PSBTInput
void FillSignatureData(SignatureData& sigdata) const;
void FromSignatureData(const SignatureData& sigdata);
void Merge(const PSBTInput& input);
bool IsSane() const;
PSBTInput() {}
template <typename Stream>
inline void Serialize(Stream& s) const {
// Write the utxo
// If there is a non-witness utxo, then don't add the witness one.
if (non_witness_utxo) {
SerializeToVector(s, PSBT_IN_NON_WITNESS_UTXO);
OverrideStream<Stream> os(&s, s.GetType(), s.GetVersion() | SERIALIZE_TRANSACTION_NO_WITNESS);
SerializeToVector(os, non_witness_utxo);
} else if (!witness_utxo.IsNull()) {
}
if (!witness_utxo.IsNull()) {
SerializeToVector(s, PSBT_IN_WITNESS_UTXO);
SerializeToVector(s, witness_utxo);
}
@@ -280,7 +279,6 @@ struct PSBTOutput
void FillSignatureData(SignatureData& sigdata) const;
void FromSignatureData(const SignatureData& sigdata);
void Merge(const PSBTOutput& output);
bool IsSane() const;
PSBTOutput() {}
template <typename Stream>
@@ -397,7 +395,6 @@ struct PartiallySignedTransaction
/** Merge psbt into this. The two psbts must have the same underlying CTransaction (i.e. the
* same actual Bitcoin transaction.) Returns true if the merge succeeded, false otherwise. */
NODISCARD bool Merge(const PartiallySignedTransaction& psbt);
bool IsSane() const;
bool AddInput(const CTxIn& txin, PSBTInput& psbtin);
bool AddOutput(const CTxOut& txout, const PSBTOutput& psbtout);
PartiallySignedTransaction() {}
@@ -547,10 +544,6 @@ struct PartiallySignedTransaction
if (outputs.size() != tx->vout.size()) {
throw std::ios_base::failure("Outputs provided does not match the number of outputs in transaction.");
}
// Sanity check
if (!IsSane()) {
throw std::ios_base::failure("PSBT is not sane.");
}
}
template <typename Stream>

View File

@@ -1,20 +1,22 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/translations">
<file alias="ach">locale/bitcoin_ach.qm</file>
<file alias="af">locale/bitcoin_af.qm</file>
<file alias="am">locale/bitcoin_am.qm</file>
<file alias="ar">locale/bitcoin_ar.qm</file>
<file alias="az">locale/bitcoin_az.qm</file>
<file alias="be">locale/bitcoin_be.qm</file>
<file alias="bg">locale/bitcoin_bg.qm</file>
<file alias="bn">locale/bitcoin_bn.qm</file>
<file alias="bs">locale/bitcoin_bs.qm</file>
<file alias="ca">locale/bitcoin_ca.qm</file>
<file alias="cmn">locale/bitcoin_cmn.qm</file>
<file alias="cs">locale/bitcoin_cs.qm</file>
<file alias="cy">locale/bitcoin_cy.qm</file>
<file alias="da">locale/bitcoin_da.qm</file>
<file alias="de">locale/bitcoin_de.qm</file>
<file alias="el">locale/bitcoin_el.qm</file>
<file alias="en">locale/bitcoin_en.qm</file>
<file alias="en_GB">locale/bitcoin_en_GB.qm</file>
<file alias="eo">locale/bitcoin_eo.qm</file>
<file alias="es">locale/bitcoin_es.qm</file>
<file alias="es_CL">locale/bitcoin_es_CL.qm</file>
@@ -28,6 +30,10 @@
<file alias="fi">locale/bitcoin_fi.qm</file>
<file alias="fil">locale/bitcoin_fil.qm</file>
<file alias="fr">locale/bitcoin_fr.qm</file>
<file alias="ga">locale/bitcoin_ga.qm</file>
<file alias="gd">locale/bitcoin_gd.qm</file>
<file alias="gl_ES">locale/bitcoin_gl_ES.qm</file>
<file alias="gu">locale/bitcoin_gu.qm</file>
<file alias="he">locale/bitcoin_he.qm</file>
<file alias="hi">locale/bitcoin_hi.qm</file>
<file alias="hr">locale/bitcoin_hr.qm</file>
@@ -38,6 +44,7 @@
<file alias="ja">locale/bitcoin_ja.qm</file>
<file alias="ka">locale/bitcoin_ka.qm</file>
<file alias="kk">locale/bitcoin_kk.qm</file>
<file alias="kl">locale/bitcoin_kl.qm</file>
<file alias="km">locale/bitcoin_km.qm</file>
<file alias="ko">locale/bitcoin_ko.qm</file>
<file alias="ku_IQ">locale/bitcoin_ku_IQ.qm</file>
@@ -54,12 +61,14 @@
<file alias="nb">locale/bitcoin_nb.qm</file>
<file alias="ne">locale/bitcoin_ne.qm</file>
<file alias="nl">locale/bitcoin_nl.qm</file>
<file alias="no">locale/bitcoin_no.qm</file>
<file alias="pam">locale/bitcoin_pam.qm</file>
<file alias="pl">locale/bitcoin_pl.qm</file>
<file alias="pt">locale/bitcoin_pt.qm</file>
<file alias="pt_BR">locale/bitcoin_pt_BR.qm</file>
<file alias="ro">locale/bitcoin_ro.qm</file>
<file alias="ru">locale/bitcoin_ru.qm</file>
<file alias="sc">locale/bitcoin_sc.qm</file>
<file alias="si">locale/bitcoin_si.qm</file>
<file alias="sk">locale/bitcoin_sk.qm</file>
<file alias="sl">locale/bitcoin_sl.qm</file>
@@ -73,6 +82,7 @@
<file alias="te">locale/bitcoin_te.qm</file>
<file alias="th">locale/bitcoin_th.qm</file>
<file alias="tr">locale/bitcoin_tr.qm</file>
<file alias="ug">locale/bitcoin_ug.qm</file>
<file alias="uk">locale/bitcoin_uk.qm</file>
<file alias="ur">locale/bitcoin_ur.qm</file>
<file alias="uz@Cyrl">locale/bitcoin_uz@Cyrl.qm</file>
@@ -84,5 +94,6 @@
<file alias="zh_CN">locale/bitcoin_zh_CN.qm</file>
<file alias="zh_HK">locale/bitcoin_zh_HK.qm</file>
<file alias="zh_TW">locale/bitcoin_zh_TW.qm</file>
<file alias="zu">locale/bitcoin_zu.qm</file>
</qresource>
</RCC>

View File

@@ -41,10 +41,11 @@ bool CCoinControlWidgetItem::operator<(const QTreeWidgetItem &other) const {
return QTreeWidgetItem::operator<(other);
}
CoinControlDialog::CoinControlDialog(const PlatformStyle *_platformStyle, QWidget *parent) :
CoinControlDialog::CoinControlDialog(CCoinControl& coin_control, WalletModel* _model, const PlatformStyle *_platformStyle, QWidget *parent) :
QDialog(parent),
ui(new Ui::CoinControlDialog),
model(nullptr),
m_coin_control(coin_control),
model(_model),
platformStyle(_platformStyle)
{
ui->setupUi(this);
@@ -134,6 +135,13 @@ CoinControlDialog::CoinControlDialog(const PlatformStyle *_platformStyle, QWidge
ui->radioTreeMode->click();
if (settings.contains("nCoinControlSortColumn") && settings.contains("nCoinControlSortOrder"))
sortView(settings.value("nCoinControlSortColumn").toInt(), (static_cast<Qt::SortOrder>(settings.value("nCoinControlSortOrder").toInt())));
if(_model->getOptionsModel() && _model->getAddressTableModel())
{
updateView();
updateLabelLocked();
CoinControlDialog::updateLabels(m_coin_control, _model, this);
}
}
CoinControlDialog::~CoinControlDialog()
@@ -146,18 +154,6 @@ CoinControlDialog::~CoinControlDialog()
delete ui;
}
void CoinControlDialog::setModel(WalletModel *_model)
{
this->model = _model;
if(_model && _model->getOptionsModel() && _model->getAddressTableModel())
{
updateView();
updateLabelLocked();
CoinControlDialog::updateLabels(_model, this);
}
}
// ok button
void CoinControlDialog::buttonBoxClicked(QAbstractButton* button)
{
@@ -183,8 +179,8 @@ 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
CoinControlDialog::updateLabels(model, this);
m_coin_control.UnSelectAll(); // just to be sure
CoinControlDialog::updateLabels(m_coin_control, model, this);
}
// context menu
@@ -369,15 +365,15 @@ void CoinControlDialog::viewItemChanged(QTreeWidgetItem* item, int column)
COutPoint outpt(uint256S(item->data(COLUMN_ADDRESS, TxHashRole).toString().toStdString()), item->data(COLUMN_ADDRESS, VOutRole).toUInt());
if (item->checkState(COLUMN_CHECKBOX) == Qt::Unchecked)
coinControl()->UnSelect(outpt);
m_coin_control.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);
m_coin_control.Select(outpt);
// selection changed -> update labels
if (ui->treeWidget->isEnabled()) // do not update on every click for (un)select all
CoinControlDialog::updateLabels(model, this);
CoinControlDialog::updateLabels(m_coin_control, model, this);
}
// TODO: Remove this temporary qt5 fix after Qt5.3 and Qt5.4 are no longer used.
@@ -402,7 +398,7 @@ void CoinControlDialog::updateLabelLocked()
else ui->labelLocked->setVisible(false);
}
void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
void CoinControlDialog::updateLabels(CCoinControl& m_coin_control, WalletModel *model, QDialog* dialog)
{
if (!model)
return;
@@ -434,7 +430,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
bool fWitness = false;
std::vector<COutPoint> vCoinControl;
coinControl()->ListSelected(vCoinControl);
m_coin_control.ListSelected(vCoinControl);
size_t i = 0;
for (const auto& out : model->wallet().getCoins(vCoinControl)) {
@@ -445,7 +441,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
const COutPoint& outpt = vCoinControl[i++];
if (out.is_spent)
{
coinControl()->UnSelect(outpt);
m_coin_control.UnSelect(outpt);
continue;
}
@@ -498,7 +494,7 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
nBytes -= 34;
// Fee
nPayFee = model->wallet().getMinimumFee(nBytes, *coinControl(), nullptr /* returned_target */, nullptr /* reason */);
nPayFee = model->wallet().getMinimumFee(nBytes, m_coin_control, nullptr /* returned_target */, nullptr /* reason */);
if (nPayAmount > 0)
{
@@ -590,12 +586,6 @@ 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())
@@ -612,8 +602,7 @@ void CoinControlDialog::updateView()
int nDisplayUnit = model->getOptionsModel()->getDisplayUnit();
for (const auto& coins : model->wallet().listCoins()) {
CCoinControlWidgetItem *itemWalletAddress = new CCoinControlWidgetItem();
itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked);
CCoinControlWidgetItem* itemWalletAddress{nullptr};
QString sWalletAddress = QString::fromStdString(EncodeDestination(coins.first));
QString sWalletLabel = model->getAddressTableModel()->labelForAddress(sWalletAddress);
if (sWalletLabel.isEmpty())
@@ -622,7 +611,7 @@ void CoinControlDialog::updateView()
if (treeMode)
{
// wallet address
ui->treeWidget->addTopLevelItem(itemWalletAddress);
itemWalletAddress = new CCoinControlWidgetItem(ui->treeWidget);
itemWalletAddress->setFlags(flgTristate);
itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked);
@@ -696,13 +685,13 @@ void CoinControlDialog::updateView()
// disable locked coins
if (model->wallet().isLockedCoin(output))
{
coinControl()->UnSelect(output); // just to be sure
m_coin_control.UnSelect(output); // just to be sure
itemOutput->setDisabled(true);
itemOutput->setIcon(COLUMN_CHECKBOX, platformStyle->SingleColorIcon(":/icons/lock_closed"));
}
// set checkbox
if (coinControl()->IsSelected(output))
if (m_coin_control.IsSelected(output))
itemOutput->setCheckState(COLUMN_CHECKBOX, Qt::Checked);
}

View File

@@ -31,7 +31,6 @@ class CCoinControlWidgetItem : public QTreeWidgetItem
{
public:
explicit CCoinControlWidgetItem(QTreeWidget *parent, int type = Type) : QTreeWidgetItem(parent, type) {}
explicit CCoinControlWidgetItem(int type = Type) : QTreeWidgetItem(type) {}
explicit CCoinControlWidgetItem(QTreeWidgetItem *parent, int type = Type) : QTreeWidgetItem(parent, type) {}
bool operator<(const QTreeWidgetItem &other) const;
@@ -43,20 +42,18 @@ class CoinControlDialog : public QDialog
Q_OBJECT
public:
explicit CoinControlDialog(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
explicit CoinControlDialog(CCoinControl& coin_control, WalletModel* model, const PlatformStyle *platformStyle, QWidget *parent = nullptr);
~CoinControlDialog();
void setModel(WalletModel *model);
// static because also called from sendcoinsdialog
static void updateLabels(WalletModel*, QDialog*);
static void updateLabels(CCoinControl& m_coin_control, WalletModel*, QDialog*);
static QList<CAmount> payAmounts;
static CCoinControl *coinControl();
static bool fSubtractFeeFromAmount;
private:
Ui::CoinControlDialog *ui;
CCoinControl& m_coin_control;
WalletModel *model;
int sortColumn;
Qt::SortOrder sortOrder;

3820
src/qt/locale/bitcoin_ach.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -269,9 +269,151 @@
<source>&amp;Options...</source>
<translation>&amp;...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation> </translation>
</message>
<message>
<source>Create a new wallet</source>
<translation> </translation>
</message>
<message>
<source>Wallet:</source>
<translation></translation>
</message>
<message>
<source>&amp;Send</source>
<translation>&amp;</translation>
</message>
<message>
<source>&amp;Receive</source>
<translation>&amp;</translation>
</message>
<message>
<source>&amp;Show / Hide</source>
<translation>&amp;/ </translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;</translation>
</message>
<message>
<source>&amp;Settings</source>
<translation>&amp;</translation>
</message>
<message>
<source>&amp;Help</source>
<translation>&amp;</translation>
</message>
<message>
<source>Error</source>
<translation></translation>
</message>
<message>
<source>Warning</source>
<translation></translation>
</message>
<message>
<source>Information</source>
<translation></translation>
</message>
<message>
<source>Open Wallet</source>
<translation> </translation>
</message>
<message>
<source>Open a wallet</source>
<translation> </translation>
</message>
<message>
<source>Close Wallet...</source>
<translation> ...</translation>
</message>
<message>
<source>Close wallet</source>
<translation> </translation>
</message>
<message>
<source>default wallet</source>
<translation> </translation>
</message>
<message>
<source>Minimize</source>
<translation></translation>
</message>
<message>
<source>Zoom</source>
<translation></translation>
</message>
<message>
<source>Error: %1</source>
<translation> %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation> %1</translation>
</message>
<message>
<source>Date: %1
</source>
<translation> %1
</translation>
</message>
<message>
<source>Amount: %1
</source>
<translation> %1
</translation>
</message>
<message>
<source>Address: %1
</source>
<translation> %1
</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Quantity:</source>
<translation></translation>
</message>
<message>
<source>Amount:</source>
<translation></translation>
</message>
<message>
<source>Fee:</source>
<translation></translation>
</message>
<message>
<source>Amount</source>
<translation></translation>
</message>
<message>
<source>Date</source>
<translation></translation>
</message>
<message>
<source>Copy address</source>
<translation> </translation>
</message>
<message>
<source>Copy amount</source>
<translation> </translation>
</message>
<message>
<source>Copy fee</source>
<translation> </translation>
</message>
<message>
<source>yes</source>
<translation></translation>
</message>
<message>
<source>no</source>
<translation></translation>
</message>
<message>
<source>(no label)</source>
<translation>( )</translation>
@@ -282,33 +424,93 @@
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Wallet Name</source>
<translation> </translation>
</message>
<message>
<source>Create</source>
<translation></translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
<message>
<source>name</source>
<translation></translation>
</message>
</context>
<context>
<name>HelpMessageDialog</name>
<message>
<source>version</source>
<translation></translation>
</message>
<message>
<source>About %1</source>
<translation> %1</translation>
</message>
</context>
<context>
<name>Intro</name>
<message>
<source>Welcome</source>
<translation> </translation>
</message>
<message>
<source>Welcome to %1.</source>
<translation> %1 </translation>
</message>
<message>
<source>Bitcoin</source>
<translation></translation>
</message>
<message>
<source>Error</source>
<translation></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
<source>Form</source>
<translation></translation>
</message>
<message>
<source>Unknown...</source>
<translation>...</translation>
</message>
<message>
<source>Hide</source>
<translation></translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>default wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Error</source>
<translation></translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>
<source>Form</source>
<translation></translation>
</message>
</context>
<context>
<name>PaymentServer</name>
@@ -318,6 +520,14 @@
</context>
<context>
<name>QObject</name>
<message>
<source>Amount</source>
<translation></translation>
</message>
<message>
<source>Error: %1</source>
<translation> %1</translation>
</message>
</context>
<context>
<name>QRImageWidget</name>
@@ -327,13 +537,21 @@
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<message>
<source>Copy amount</source>
<translation> </translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address</source>
<translation></translation>
</message>
<message>
<source>Amount</source>
<translation></translation>
</message>
<message>
<source>Label</source>
<translation> </translation>
@@ -341,6 +559,10 @@
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Date</source>
<translation></translation>
</message>
<message>
<source>Label</source>
<translation> </translation>
@@ -352,6 +574,30 @@
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>Quantity:</source>
<translation></translation>
</message>
<message>
<source>Amount:</source>
<translation></translation>
</message>
<message>
<source>Fee:</source>
<translation></translation>
</message>
<message>
<source>Hide</source>
<translation></translation>
</message>
<message>
<source>Copy amount</source>
<translation> </translation>
</message>
<message>
<source>Copy fee</source>
<translation> </translation>
</message>
<message>
<source>(no label)</source>
<translation>( )</translation>
@@ -371,12 +617,24 @@
</context>
<context>
<name>TransactionDesc</name>
<message>
<source>Date</source>
<translation></translation>
</message>
<message>
<source>Amount</source>
<translation></translation>
</message>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Date</source>
<translation></translation>
</message>
<message>
<source>Label</source>
<translation> </translation>
@@ -388,10 +646,22 @@
</context>
<context>
<name>TransactionView</name>
<message>
<source>Copy address</source>
<translation> </translation>
</message>
<message>
<source>Copy amount</source>
<translation> </translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation> (*.csv)</translation>
</message>
<message>
<source>Date</source>
<translation></translation>
</message>
<message>
<source>Label</source>
<translation> </translation>
@@ -410,13 +680,21 @@
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
</context>
<message>
<source>default wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

File diff suppressed because it is too large Load Diff

410
src/qt/locale/bitcoin_az.ts Normal file
View File

@@ -0,0 +1,410 @@
<TS language="az" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>sağ basın ve cüzdan ünvanınızı veya etiketinizi deyişdirin.</translation>
</message>
<message>
<source>Create a new address</source>
<translation>teze ünvan yaradın.</translation>
</message>
<message>
<source>&amp;New</source>
<translation>&amp;teze</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>hal-hazırda seçilmiş ünvanı sistem ekranına kopyalayın</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation>&amp;kopyala</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation>&amp;bağla</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>Hazırki seçilmiş ünvanı siyahıdan sil</translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation>Axtarmaq üçün ünvan ya etiket daxil edin</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation>Hazırki vərəqdəki verilənləri fayla ixrac edin</translation>
</message>
<message>
<source>&amp;Export</source>
<translation>&amp;İxrac</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation>&amp;Sil</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation>Pul göndəriləcək ünvanı seçin</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation>Pul alınacaq ünvanı seçin</translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation>Seç</translation>
</message>
<message>
<source>Sending addresses</source>
<translation>Göndərilən ünvanlar</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation>Alınan ünvanlar</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>Bunlar ödənişləri göndərmək üçün Bitcoin ünvanlarınızdır. pul göndərməzdən əvvəl həmişə miqdarı göndəriləcək ünvanı yoxlayın.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Ünvanı kopyala</translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation>Etiketi kopyala</translation>
</message>
<message>
<source>&amp;Edit</source>
<translation>&amp;Düzəliş et</translation>
</message>
<message>
<source>Export Address List</source>
<translation>Ünvan siyahısını ixrac et</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Vergüllə ayrılmış fayl (*.csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>İxrac edilmədi</translation>
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<translation>Ünvan siyahısını %1 daxilində saxlamağı sınayarkən xəta baş verdi. Zəhmət olmasa yenidən sınayın.</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation>Etiket</translation>
</message>
<message>
<source>Address</source>
<translation>Ünvan</translation>
</message>
<message>
<source>(no label)</source>
<translation>(etiket yoxdur)</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation>Şifrə İfadə Dialoqu</translation>
</message>
<message>
<source>Enter passphrase</source>
<translation>Şifrə ifadəsini daxil edin</translation>
</message>
<message>
<source>New passphrase</source>
<translation>Yeni şifrə ifadəsi</translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation>Şifrə ifadəsini təkrarlayın</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Şifrə ifadəsini göstər</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Şifrəli pulqabı</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation>Bu əməliyyatın pulqabı kilidini ılması üçün pul qabınızın şifrə ifadəsinə ehtiyacı var.</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation>Pulqabı kilidini </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation>Bu əməliyyatın pulqabını şifrələmək üçün pul qabınızın şifrə ifadəsinə ehtiyacı var.</translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation>Pulqabı şifrələ</translation>
</message>
<message>
<source>Change passphrase</source>
<translation>Şifrə ifadəsini dəyişdir</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation>Pulqabı şifrələməsini təsdiqlə</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Settings</source>
<translation>&amp;Tənzimləmələr</translation>
</message>
<message>
<source>Error</source>
<translation>Xəta</translation>
</message>
<message>
<source>Warning</source>
<translation>Xəbərdarlıq</translation>
</message>
<message>
<source>Information</source>
<translation>Məlumat</translation>
</message>
<message>
<source>Open a wallet</source>
<translation>Bir pulqabı </translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>(no label)</source>
<translation>(etiket yoxdur)</translation>
</message>
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
</context>
<context>
<name>HelpMessageDialog</name>
</context>
<context>
<name>Intro</name>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>Bu tənzimləməni geri almaq bütün blok zəncirinin yenidən endirilməsini tələb edəcək. Əvvəlcə tam zənciri endirmək sonra budamaq daha sürətlidir. Bəzi qabaqcıl özəllikləri sıradan çıxarar.</translation>
</message>
<message>
<source>Error</source>
<translation>Xəta</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Disables some advanced features but all blocks will still be fully validated. Reverting this setting requires re-downloading the entire blockchain. Actual disk usage may be somewhat higher.</source>
<translation>Bəzi qabaqcıl özəllikləri sıradan çıxardar, ancaq bütün bloklar tamamilə təsdiqlənmiş qalacaq. Bu tənzimləməni geri almaq bütün blok zəncirinin yenidən endirilməsini tələb edəcək. Aktual disk istifadəsi biraz daha yüksək ola bilər.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain.</source>
<translation>Bu tənzimləməni geri almaq bütün blok zəncirinin yenidən endirilməsini tələb edəcək. </translation>
</message>
<message>
<source>The user interface language can be set here. This setting will take effect after restarting %1.</source>
<translation>İstifadəçi interfeys dili burada tənzimlənə bilər. Bu tənzimləmə %1 yenidən başladıldıqdan sonra təsirli olacaq.</translation>
</message>
<message>
<source>Error</source>
<translation>Xəta</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
</context>
<context>
<name>PaymentServer</name>
</context>
<context>
<name>PeerTableModel</name>
</context>
<context>
<name>QObject</name>
</context>
<context>
<name>QRImageWidget</name>
</context>
<context>
<name>RPCConsole</name>
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address</source>
<translation>Ünvan</translation>
</message>
<message>
<source>Label</source>
<translation>Etiket</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation>Etiket</translation>
</message>
<message>
<source>(no label)</source>
<translation>(etiket yoxdur)</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>(no label)</source>
<translation>(etiket yoxdur)</translation>
</message>
</context>
<context>
<name>SendCoinsEntry</name>
</context>
<context>
<name>ShutdownWindow</name>
</context>
<context>
<name>SignVerifyMessageDialog</name>
</context>
<context>
<name>TrafficGraphWidget</name>
</context>
<context>
<name>TransactionDesc</name>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation>Etiket</translation>
</message>
<message>
<source>(no label)</source>
<translation>(etiket yoxdur)</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Vergüllə ayrılmış fayl (*.csv)</translation>
</message>
<message>
<source>Label</source>
<translation>Etiket</translation>
</message>
<message>
<source>Address</source>
<translation>Ünvan</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>İxrac edilmədi</translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
</context>
<context>
<name>WalletController</name>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation>&amp;İxrac</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation>Hazırki vərəqdəki verilənləri fayla ixrac edin</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Insufficient funds</source>
<translation>Yetərsiz balans</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation>Ödəniş təxmin edilmədi. Fallbackfee sıradan çıxarıldı. Bir neçə blok gözləyin ya Fallbackfee-ni fəallaşdırın.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>Xəbərdarlıq: Gizli açarlar, sıradan çıxarılmış gizli açarlar ilə {%s} pulqabısında aşkarlandı.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>'%s' verilənlər kateqoriyasına yazıla bilmir; icazələri yoxlayın.</translation>
</message>
<message>
<source>Loading wallet...</source>
<translation>Pulqabı yüklənir...</translation>
</message>
<message>
<source>Cannot downgrade wallet</source>
<translation>Pulqabı əvvəlki versiyaya keçirilə bilmir</translation>
</message>
<message>
<source>Rescanning...</source>
<translation>Yenidən tədqiq edilir...</translation>
</message>
<message>
<source>Done loading</source>
<translation>Yükləmə tamamlandı</translation>
</message>
</context>
</TS>

View File

@@ -149,7 +149,7 @@
</message>
<message>
<source>Decrypt wallet</source>
<translation>Рачшыфраваць гаманец</translation>
<translation>Раcшыфраваць гаманец</translation>
</message>
<message>
<source>Change passphrase</source>

View File

@@ -131,6 +131,10 @@
<source>Repeat new passphrase</source>
<translation>Повтори парола</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Показване на парола</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Криптирай портфейл</translation>
@@ -171,6 +175,22 @@
<source>Wallet encrypted</source>
<translation>портфейлa е шифрован</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Въведете старата и новата паролна фраза за портфейла.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Портфейл за криптиране</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Портфейлът ви е на път да бъде шифрован.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Вашият портфейл сега е криптиран.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>ВАЖНО: Всички стари запазвания, които сте направили на Вашият портфейл трябва да замените с запазване на новополучения, шифриран портфейл. От съображения за сигурност, предишните запазвания на нешифрирани портфейли ще станат неизползваеми веднага, щом започнете да използвате новият, шифриран портфейл.</translation>
@@ -437,6 +457,22 @@
<source>Up to date</source>
<translation>Актуално</translation>
</message>
<message>
<source>Node window</source>
<translation>Прозорец на възела</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Отворете портфейл</translation>
</message>
<message>
<source>Close Wallet...</source>
<translation>Затвори портфейла</translation>
</message>
<message>
<source>Close wallet</source>
<translation>Затвори портфейла</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Покажи %1 помощно съобщение за да получиш лист с възможни Биткойн команди</translation>
@@ -453,6 +489,14 @@
<source>Minimize</source>
<translation>Минимизирай</translation>
</message>
<message>
<source>Zoom</source>
<translation>Увеличи</translation>
</message>
<message>
<source>Main Window</source>
<translation>Главен Прозорец</translation>
</message>
<message>
<source>%1 client</source>
<translation>%1 клиент</translation>
@@ -646,6 +690,10 @@
<source>no</source>
<translation>не</translation>
</message>
<message>
<source>This label turns red if any recipient receives an amount smaller than the current dust threshold.</source>
<translation>Този етикет става червен ако някой получател получи количество, по-малко от текущия праг на остатък</translation>
</message>
<message>
<source>(no label)</source>
<translation>(без етикет)</translation>
@@ -661,9 +709,17 @@
</context>
<context>
<name>CreateWalletActivity</name>
<message>
<source>Create wallet failed</source>
<translation>Създаването на портфейл не бе успешен</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation>Създайте портфейл</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1262,6 +1318,10 @@
<source>User Agent</source>
<translation>Потребителски агент</translation>
</message>
<message>
<source>Node window</source>
<translation>Прозорец на възела</translation>
</message>
<message>
<source>Services</source>
<translation>Услуги</translation>
@@ -2188,6 +2248,10 @@
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Затвори портфейла</translation>
</message>
</context>
<context>
<name>WalletFrame</name>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Feu clic dret per a editar l'adreça o l'etiqueta</translation>
<translation>Feu clic al botó dret per a editar l'adreça o l'etiqueta</translation>
</message>
<message>
<source>Create a new address</source>
@@ -69,6 +69,10 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Aquestes són les vostres adreces de Bitcoin per enviar els pagaments. Sempre reviseu l'import i l'adreça del destinatari abans de transferir monedes.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Aquestes són les teves adreces Bitcoin per rebre pagaments. Utilitza el botó "Crear nova adreça de recepció" de la pestanya de recepció per crear noves adreces.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Copia l'adreça</translation>
@@ -183,6 +187,10 @@
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Introduïu la contrasenya antiga i la contrasenya nova a la cartera.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>Recorda que tot i xifrant la teva cartera, els teus bitcoins no estan completament protegits de robatori a través de programari maliciós que estigui infectant el teu ordinador.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Cartera per ser encriptada</translation>
@@ -283,7 +291,7 @@
</message>
<message>
<source>Show information about %1</source>
<translation>Mosta informació sobre el %1</translation>
<translation>Mostra informació sobre el %1</translation>
</message>
<message>
<source>About &amp;Qt</source>
@@ -317,6 +325,14 @@
<source>Open &amp;URI...</source>
<translation>Obre un &amp;URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Crear Cartera...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crear una nova cartera</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Moneder:</translation>
@@ -421,6 +437,10 @@
<source>&amp;Command-line options</source>
<translation>Opcions de la &amp;línia d'ordres</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network</source>
<translation><numerusform>Una connexió activa a la xarxa de Bitcoin</numerusform><numerusform>%n connexions actives a la xarxa de Bitcoin</numerusform></translation>
</message>
<message>
<source>Indexing blocks on disk...</source>
<translation>S'estan indexant els blocs al disc...</translation>
@@ -429,6 +449,10 @@
<source>Processing blocks on disk...</source>
<translation>S'estan processant els blocs al disc...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation><numerusform>Processat un bloc de l'historial de transaccions.</numerusform><numerusform>Processat %n blocs de l'historial de transaccions.</numerusform></translation>
</message>
<message>
<source>%1 behind</source>
<translation>%1 darrere</translation>
@@ -457,6 +481,14 @@
<source>Up to date</source>
<translation>Actualitzat</translation>
</message>
<message>
<source>Node window</source>
<translation>Finestra node</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Obrir depurador de node i consola de diagnosi.</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>Adreces d'&amp;enviament</translation>
@@ -465,13 +497,17 @@
<source>&amp;Receiving addresses</source>
<translation>Adreces de &amp;recepció</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Obrir un bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Obre la cartera</translation>
</message>
<message>
<source>Open a wallet</source>
<translation>Obre la cartera</translation>
<translation>Obre una cartera</translation>
</message>
<message>
<source>Close Wallet...</source>
@@ -525,6 +561,10 @@
<source>Error: %1</source>
<translation>Avís: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>Avís: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -747,10 +787,59 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Creant cartera &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>La creació de cartera ha fallat</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Avís en la creació de la cartera</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>Crear cartera</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Nom de la cartera</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Xifra la cartera. La cartera serà xifrada amb la contrasenya que escullis.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Xifrar la cartera</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Deshabilita les claus privades per a aquesta cartera. Carteres amb claus privades deshabilitades no tindran cap clau privada i no podran tenir cap llavor HD o importar claus privades.
Això és ideal per a carteres de mode només lectura.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Deshabilitar claus privades</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>Crea una cartera en blanc. Carteres en blanc no tenen claus privades inicialment o scripts. Claus privades i adreces poden ser importades, o una llavor HD, més endavant.</translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation>Fes cartera en blanc</translation>
</message>
<message>
<source>Create</source>
<translation>Crear</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -856,12 +945,16 @@
</message>
<message>
<source>As this is the first time the program is launched, you can choose where %1 will store its data.</source>
<translation>Com és la primera vegada que s'executa el programa, podeu triar on %1 emmagatzemarà les dades.</translation>
<translation>Com és la primera vegada que s'executa el programa, podeu triar on %1 emmagatzemaran les dades.</translation>
</message>
<message>
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>Quan feu clic a D'acord, %1 començarà a descarregar i processar la cadena de blocs %4 completa (%2 GB) començant per les primeres transaccions de %3, any de llençament inicial de %4.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>Desfer aquest canvi requereix tornar-se a descarregar el blockchain sencer. És més ràpid descarregar la cadena completa primer i després podar. Deshabilita algunes de les característiques avançades.</translation>
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>Aquesta sincronització inicial és molt exigent i pot exposar problemes de maquinari amb l'equip que anteriorment havien passat desapercebuts. Cada vegada que executeu %1, continuarà descarregant des del punt on es va deixar.</translation>
@@ -882,6 +975,10 @@
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
<source>Discard blocks after verification, except most recent %1 GB (prune)</source>
<translation>Descarta blocs després de la verificació, excepte el més recent %1 GB (podar)</translation>
</message>
<message>
<source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
<translation>Almenys %1 GB de dades s'emmagatzemaran en aquest directori, i creixerà amb el temps.</translation>
@@ -906,7 +1003,19 @@
<source>Error</source>
<translation>Error</translation>
</message>
</context>
<message numerus="yes">
<source>%n GB of free space available</source>
<translation><numerusform>Un GB d'espai lliure disponible.</numerusform><numerusform>%n GB d'espai lliure disponibles</numerusform></translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation><numerusform>(Un GB necessari)</numerusform><numerusform>(de %n GB necessàris)</numerusform></translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(Un GB necessari per a la cadena completa)</numerusform><numerusform>(Un GB necessari per a la cadena completa)</numerusform></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -953,6 +1062,14 @@
<source>Hide</source>
<translation>Amaga</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 sincronitzant ara mateix. Es descarregaran capçaleres i blocs d'altres peers i es validaran fins a obtenir la punta de la cadena de blocs. </translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Desconegut. Sincronització de les capçaleres (%1, %2%)...</translation>
@@ -960,6 +1077,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Obre Bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -967,6 +1088,14 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>Open wallet failed</source>
<translation>Ha fallat l'obertura de la cartera</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Avís en l'obertura de la cartera</translation>
</message>
<message>
<source>default wallet</source>
<translation>moneder per defecte</translation>
@@ -1194,6 +1323,10 @@
<source>&amp;Third party transaction URLs</source>
<translation>URL de transaccions de tercers</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line or in the configuration file:</source>
<translation>Opcions configurades en aquest diàleg són sobreescrites per la línia de comandes o el fitxer de configuració:</translation>
</message>
<message>
<source>&amp;OK</source>
<translation>&amp;D'acord</translation>
@@ -1340,6 +1473,18 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' no és una URI vàlida. Usi 'bitcoin:' en lloc seu.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>No es pot processar la petició de pagament perquè BIP70 no està suportat.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>A causa dels defectes generalitzats en el BIP70 és altament recomanable que qualsevol instrucció comerciant per canviar carteres sigui ignorada.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Si estàs rebent aquest error, hauries de demanar al comerciant que et doni una URI compatible amb el BIP21.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>Adreça de pagament no vàlida %1</translation>
@@ -1418,10 +1563,34 @@
<source>%1 ms</source>
<translation>%1 ms</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation><numerusform>Un segon</numerusform><numerusform>%n segons</numerusform></translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation><numerusform>Un minut</numerusform><numerusform>%n minuts</numerusform></translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation><numerusform>Una hora</numerusform><numerusform>%n hores</numerusform></translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation><numerusform>Un dia</numerusform><numerusform>%n dies</numerusform></translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation><numerusform>Una setmana</numerusform><numerusform>%n setmanes</numerusform></translation>
</message>
<message>
<source>%1 and %2</source>
<translation>%1 i %2</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation><numerusform>Un any</numerusform><numerusform>%n anys</numerusform></translation>
</message>
<message>
<source>%1 B</source>
<translation>%1 B</translation>
@@ -1477,6 +1646,10 @@
<source>Error encoding URI into QR Code.</source>
<translation>Error en codificar l'URI en un codi QR.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>Suport de codi QR no disponible.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>Desa el codi QR</translation>
@@ -1512,10 +1685,18 @@
<source>Datadir</source>
<translation>Datadir</translation>
</message>
<message>
<source>To specify a non-default location of the data directory use the '%1' option.</source>
<translation>Per tal d'especificar una ubicació que no és per defecte del directori de dades utilitza la '%1' opció.</translation>
</message>
<message>
<source>Blocksdir</source>
<translation>Directori de blocs</translation>
</message>
<message>
<source>To specify a non-default location of the blocks directory use the '%1' option.</source>
<translation>Per tal d'especificar una ubicació que no és per defecte del directori de blocs utilitza la '%1' opció.</translation>
</message>
<message>
<source>Startup time</source>
<translation>&amp;Temps d'inici</translation>
@@ -1608,10 +1789,22 @@
<source>Synced Blocks</source>
<translation>Blocs sincronitzats</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>El sistema autònom de mapat utilitzat per diversificar la selecció entre iguals.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapat com</translation>
</message>
<message>
<source>User Agent</source>
<translation>Agent d'usuari</translation>
</message>
<message>
<source>Node window</source>
<translation>Finestra node</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Obre el fitxer de registre de depuració %1 del directori de dades actual. Això pot trigar uns segons en fitxers de registre grans.</translation>
@@ -1823,6 +2016,18 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Un import opcional per sol·licitar. Deixeu-ho en blanc o zero per no sol·licitar cap import específic.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Una etiqueta opcional per associar-se a la nova adreça de recepció (usada per vostè per identificar una factura). També sadjunta a la sol·licitud de pagament.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Un missatge opcional adjunt a la sol·licitud de pagament i que es pot mostrar al remitent.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Creeu una nova adreça de recepció</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Neteja tots els camps del formulari.</translation>
@@ -2072,6 +2277,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Dust:</source>
<translation>Polsim:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Amagueu la configuració de les tarifes de transacció</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Quan no hi ha prou espai en els blocs per encabir totes les transaccions, els miners i així mateix els nodes repetidors poden exigir una taxa mínima. És acceptable pagar únicament la taxa mínima, però tingueu present que pot resultar que la vostra transacció no sigui mai confirmada mentre hi hagi més demanda de transaccions bitcoin de les que la xarxa pot processar.</translation>
</message>
<message>
<source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
<translation>Una taxa massa baixa pot resultar en una transacció que no es confirmi mai (llegiu el consell)</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation>Temps de confirmació objectiu:</translation>
@@ -2132,18 +2349,38 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 blocs)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Creació sense firmar</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Crea una transacció bitcoin parcialment signada (PSBT) per a utilitzar, per exemple, amb una cartera %1 fora de línia o amb una cartera compatible amb PSBT.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>de la cartera "%1"</translation>
</message>
<message>
<source>%1 to '%2'</source>
<translation>%1 a '%2'</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 a %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Voleu redactar aquesta transacció?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Esteu segur que ho voleu enviar?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Revisa la teva proposta de transacció. Es produirà una transacció de Bitcoin amb signatura parcial (PSBT) que podeu copiar i després signar, per exemple, amb una cartera %1 de tipus fora de línia o una cartera física compatible amb PSBT.</translation>
</message>
<message>
<source>or</source>
<translation>o</translation>
@@ -2160,14 +2397,42 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Transaction fee</source>
<translation>Comissió de transacció</translation>
</message>
<message>
<source>Not signalling Replace-By-Fee, BIP-125.</source>
<translation>Substitució per tarifa sense senyalització, BIP-125</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Import total</translation>
</message>
<message>
<source>To review recipient list click "Show Details..."</source>
<translation>Per revisar la llista de destinataris, feu clic a "Mostra els detalls ..."</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Confirma l'enviament de monedes</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Confirmeu la proposta de transacció</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Copiar PSBT al porta-retalls.</translation>
</message>
<message>
<source>Send</source>
<translation>Enviar</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT copiada</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Saldo només de vigilància:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>L'adreça del destinatari no és vàlida. Torneu-la a comprovar.</translation>
@@ -2200,6 +2465,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Payment request expired.</source>
<translation>La sol·licitud de pagament ha vençut.</translation>
</message>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation><numerusform>Sestima que comenci la confirmació dintre d'un bloc.</numerusform><numerusform>Sestima que comenci la confirmació dintre de %n blocs.</numerusform></translation>
</message>
<message>
<source>Warning: Invalid Bitcoin address</source>
<translation>Avís: adreça Bitcoin no vàlida</translation>
@@ -2259,6 +2528,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Remove this entry</source>
<translation>Elimina aquesta entrada</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>Limport a enviar a la unitat seleccionada</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>La comissió es deduirà de l'import que s'enviarà. El destinatari rebrà menys bitcoins que les que introduïu al camp d'import. Si se seleccionen múltiples destinataris, la comissió es dividirà per igual.</translation>
@@ -2385,6 +2658,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>The Bitcoin address the message was signed with</source>
<translation>L'adreça Bitcoin amb què va ser signat el missatge</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>El missatge signat per verificar</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>La signatura donada quan es va signar el missatge</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Verificar el missatge per assegurar-se que ha estat signat amb una adreça Bitcoin específica</translation>
@@ -2417,6 +2698,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Wallet unlock was cancelled.</source>
<translation>S'ha cancel·lat el desblocatge de la cartera.</translation>
</message>
<message>
<source>No error</source>
<translation>Cap error</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>La clau privada per a la adreça introduïda no està disponible.</translation>
@@ -2459,6 +2744,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
<source>Open for %n more block(s)</source>
<translation><numerusform>Obre per un bloc més</numerusform><numerusform>Obre per %n blocs més</numerusform></translation>
</message>
<message>
<source>Open until %1</source>
<translation>Obert fins %1</translation>
@@ -2535,6 +2824,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Credit</source>
<translation>Crèdit</translation>
</message>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation><numerusform>madura en un bloc més</numerusform><numerusform>madura en %n blocs més</numerusform></translation>
</message>
<message>
<source>not accepted</source>
<translation>no acceptat</translation>
@@ -2583,6 +2876,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Output index</source>
<translation>Índex de resultats</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation>(El certificat no s'ha verificat)</translation>
</message>
<message>
<source>Merchant</source>
<translation>Mercader</translation>
@@ -2641,6 +2938,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Label</source>
<translation>Etiqueta</translation>
</message>
<message numerus="yes">
<source>Open for %n more block(s)</source>
<translation><numerusform>Obre per un bloc més</numerusform><numerusform>Obre per %n blocs més</numerusform></translation>
</message>
<message>
<source>Open until %1</source>
<translation>Obert fins %1</translation>
@@ -2902,7 +3203,15 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Close wallet</source>
<translation>Tanca la cartera</translation>
</message>
</context>
<message>
<source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
<translation>Segur que voleu tancar la cartera &lt;i&gt;%1 &lt;/i&gt;?</translation>
</message>
<message>
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Si tanqueu la cartera durant massa temps, es pot haver de tornar a sincronitzar tota la cadena si teniu el sistema de poda habilitat.</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
@@ -2928,6 +3237,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Do you want to increase the fee?</source>
<translation>Voleu augmentar la tarifa?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Voleu redactar una transacció amb augment de tarifes?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>tarifa actual:</translation>
@@ -2944,6 +3257,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Confirm fee bump</source>
<translation>Confirmeu el recàrrec de tarifes</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>No es pot redactar la transacció.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT copiada</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>No es pot signar la transacció.</translation>
@@ -3026,10 +3347,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>The %s developers</source>
<translation>Els desenvolupadors %s</translation>
</message>
<message>
<source>Can't generate a change-address key. No keys in the internal keypool and can't generate any keys.</source>
<translation>No es pot generar una clau dadreça de canvi. No hi ha claus al keypool intern i no es pot generar cap clau.</translation>
</message>
<message>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>No es pot obtenir un bloqueig al directori de dades %s. %s probablement ja s'estigui executant.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>No es poden proporcionar connexions específiques i no es poden trobar connexions sortint al mateix temps.</translation>
</message>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>S'ha produït un error en llegir %s. Totes les claus es llegeixen correctament, però les dades de la transacció o les entrades de la llibreta d'adreces podrien faltar o ser incorrectes.</translation>
@@ -3090,6 +3419,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Change index out of range</source>
<translation>Canvieu l'índex fora de l'abast</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation>Configuració per a %s únicament aplicada a %s de la xarxa quan es troba a la secció [%s].</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation>Copyright (C) %i-%i</translation>
@@ -3098,6 +3431,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Corrupted block database detected</source>
<translation>S'ha detectat una base de dades de blocs corrupta</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>No s'ha pogut trobar el fitxer asmap %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>No s'ha pogut analitzar el fitxer asmap %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Voleu reconstruir la base de dades de blocs ara?</translation>
@@ -3114,6 +3455,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Error loading %s</source>
<translation>Error carregant %s</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation>Error carregant %s: les claus privades només es poden desactivar durant la creació</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation>S'ha produït un error en carregar %s: la cartera és corrupta</translation>
@@ -3134,6 +3479,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation>Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això.</translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation>No s'ha pogut escanejar novament la cartera durant la inicialització</translation>
</message>
<message>
<source>Importing...</source>
<translation>S'està important...</translation>
@@ -3146,6 +3495,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation>S'ha produït un error en la verificació de sanejament d'inicialització. S'està tancant %s.</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation>Permís P2P no vàlid: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation>Import invàlid per -%s=&lt;amount&gt;: '%s'</translation>
@@ -3158,10 +3511,30 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>Import invàlid per -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>El directori de blocs especificat "%s" no existeix.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>Tipus d'adreça desconegut '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Tipus de canvi desconegut '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>Actualitzant txindex de la base de dades</translation>
</message>
<message>
<source>Loading P2P addresses...</source>
<translation>S'estan carregant les adreces P2P ...</translation>
</message>
<message>
<source>Error: Disk space is too low!</source>
<translation>Error: l'espai del disc és insuficient.</translation>
</message>
<message>
<source>Loading banlist...</source>
<translation>Carregant banlist ...</translation>
@@ -3246,6 +3619,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Error upgrading chainstate database</source>
<translation>S'ha produït un error en actualitzar la base de dades de chainstate</translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation>Error: l'espai del disc és insuficient per a %s</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Adreça o nom de l'ordinador -onion no vàlida: '%s'</translation>
@@ -3266,6 +3643,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>Cal especificar un port amb -whitebind: «%s»</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>El mode de poda no és compatible amb -blockfilterindex.</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation>Reducció de -maxconnections de %d a %d, a causa de les limitacions del sistema.</translation>
@@ -3278,6 +3659,24 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Signing transaction failed</source>
<translation>Ha fallat la signatura de la transacció</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation>-Walletdir especificat "%s" no existeix</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation>-Walletdir especificat "%s" és una ruta relativa</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation>-Walletdir especificat "%s" no és un directori</translation>
</message>
<message>
<source>The specified config file %s does not exist
</source>
<translation>El fitxer de configuració especificat %s no existeix
</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation>L'import de la transacció és massa petit per pagar-ne una comissió</translation>
@@ -3298,10 +3697,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation>No s'ha pogut vincular a %s en aquest ordinador (la vinculació ha retornat l'error %s)</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation>No es pot crear el fitxer PID '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation>No s'han pogut generar les claus inicials</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>Valor %s -blockfilterindex desconegut</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>S'estan verificant les carteres...</translation>
@@ -3374,6 +3781,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Insufficient funds</source>
<translation>Balanç insuficient</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use -upgradewallet=169900 or -upgradewallet with no version specified.</source>
<translation>No es pot actualitzar una cartera de tipus dividida que no sigui física sense haver d'actualitzar per tal de suportar keypool pre dividida. Si us plau, utilitzeu -upgradewallet = 169900 o -upgradewallet sense cap versió especificada.</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation>L'estimació de la quota ha fallat. Fallbackfee està desactivat. Espereu uns quants blocs o activeu -fallbackfee.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>Avís: Claus privades detectades en la cartera {%s} amb claus privades deshabilitades</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>No es pot escriure en el directori de dades "%s". Reviseu-ne els permisos.</translation>

View File

@@ -0,0 +1,214 @@
<TS language="cmn" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation></translation>
</message>
<message>
<source>Create a new address</source>
<translation></translation>
</message>
<message>
<source>&amp;New</source>
<translation>&amp;New</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation></translation>
</message>
<message>
<source>&amp;Copy</source>
<translation>&amp;</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation>&amp;</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation></translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Unlock wallet</source>
<translation>Unlock wallet</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Click to disable network activity.</source>
<translation>Click to disable network activity.</translation>
</message>
<message>
<source>Sign messages with your Bitcoin addresses to prove you own them</source>
<translation>Sign messages with your Bitcoin addresses to prove you own them</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Confirmations</source>
<translation>Confirmations</translation>
</message>
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
</context>
<context>
<name>HelpMessageDialog</name>
</context>
<context>
<name>Intro</name>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Map port using &amp;UPnP</source>
<translation>Map port using &amp;UPnP</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
</context>
<context>
<name>PaymentServer</name>
</context>
<context>
<name>PeerTableModel</name>
</context>
<context>
<name>QObject</name>
</context>
<context>
<name>QRImageWidget</name>
</context>
<context>
<name>RPCConsole</name>
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<context>
<name>ReceiveRequestDialog</name>
</context>
<context>
<name>RecentRequestsTableModel</name>
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>The recipient address is not valid. Please recheck.</translation>
</message>
<message>
<source>Warning: Invalid Bitcoin address</source>
<translation>Warning: Invalid Bitcoin address</translation>
</message>
</context>
<context>
<name>SendCoinsEntry</name>
</context>
<context>
<name>ShutdownWindow</name>
</context>
<context>
<name>SignVerifyMessageDialog</name>
</context>
<context>
<name>TrafficGraphWidget</name>
<message>
<source>KB/s</source>
<translation>KB/s</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message>
<source>Status</source>
<translation>Status</translation>
</message>
<message>
<source>Merchant</source>
<translation>Merchant</translation>
</message>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Amount removed from or added to balance.</source>
<translation>Amount removed from or added to balance.</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Other</source>
<translation>Other</translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
</context>
<context>
<name>WalletController</name>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
<message>
<source>Current fee:</source>
<translation>Current fee:</translation>
</message>
</context>
<context>
<name>WalletView</name>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Transaction must have at least one recipient</source>
<translation>Transaction must have at least one recipient</translation>
</message>
<message>
<source>Rescanning...</source>
<translation>Rescanning...</translation>
</message>
</context>
</TS>

View File

@@ -3,11 +3,11 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Pravým tlačítkem myši můžeš upravit označení adresy</translation>
<translation>Pravým tlačítkem myši můžeš upravit adresu nebo štítek</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Vytvoř novou adresu</translation>
<translation>Vytvořit novou adresu</translation>
</message>
<message>
<source>&amp;New</source>
@@ -39,7 +39,7 @@
</message>
<message>
<source>&amp;Export</source>
<translation>&amp;Export</translation>
<translation>&amp;Vývozní</translation>
</message>
<message>
<source>&amp;Delete</source>
@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Aktuální</translation>
</message>
<message>
<source>Node window</source>
<translation>Okno uzlu</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Otevřít konzolu pro ladění a diagnostiku uzlů</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>Odesílací adresy</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>Přijímací adresy</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Načíst Bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Otevřít peněženku</translation>
@@ -549,6 +561,10 @@
<source>Error: %1</source>
<translation>Chyba: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>Varování: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -771,10 +787,58 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Vytvářím peněženku &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>Vytvoření peněženky selhalo</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Vytvořit varování peněženky</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>Vytvořit peněženku</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Název peněženky</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Zašifrovat peněženku. Peněženka bude zašifrována pomocí vašeho hesla.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Zašifrovat peněženku</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Vypnout soukromé klíče pro tuto peněženku. Peněženky s vypnutými soukromými klíči nebudou mít soukromé klíče a nemohou mít HD inicializaci ani importované soukromé klíče. Tohle je ideální pro peněženky pouze na sledování.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Zrušit soukromé klíče</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>Vytvořit prázdnou peněženku. Prázdné peněženky na začátku nemají žádné soukromé klíče ani skripty. Později mohou být importovány soukromé klíče a adresy nebo nastavená HD inicializace.</translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation>Vytvořit prázdnou peněženku</translation>
</message>
<message>
<source>Create</source>
<translation>Vytvořit</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -886,6 +950,10 @@
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>Jakmile stiskneš OK, %1 začne stahovat a zpracovávat celý %4ový blockchain (%2 GB), počínaje nejstaršími transakcemi z roku %3, kdy byl %4 spuštěn.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>Vrácení tohoto nastavení vyžaduje opětovné stažení celého blockchainu. Je rychlejší stáhnout celý řetězec nejprve a prořezat jej později. Některé pokročilé funkce budou zakázány, dokud celý blockchain nebude stažen nanovo.</translation>
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>Prvotní synchronizace je velice náročná, a mohou se tak díky začít na tvém počítači projevovat dosud skryté hardwarové problémy. Pokaždé, když spustíš %1, bude stahování pokračovat tam, kde skončilo.</translation>
@@ -906,6 +974,10 @@
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
<source>Discard blocks after verification, except most recent %1 GB (prune)</source>
<translation>Zahodit bloky po ověření, s výjimkou posledních %1 GB (prořezat)</translation>
</message>
<message>
<source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
<translation>Bude proto potřebovat do tohoto adresáře uložit nejméně %1 GB dat tohle číslo navíc bude v průběhu času růst.</translation>
@@ -938,7 +1010,11 @@
<source>(of %n GB needed)</source>
<translation><numerusform>(z potřebného %n GB)</numerusform><numerusform>(z potřebných %n GB)</numerusform><numerusform>(z potřebných %n GB)</numerusform><numerusform>(z potřebných %n GB)</numerusform></translation>
</message>
</context>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(%n GB potřeba pre plný řetězec)</numerusform><numerusform>(%n GB potřeba pre plný řetězec) </numerusform><numerusform>(%n GB potřeba pre plný řetězec) </numerusform><numerusform>(%n GB potřeba pre plný řetězec) </numerusform></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -985,6 +1061,14 @@
<source>Hide</source>
<translation>Skryj</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc - úniková klávesa</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 se právě synchronizuje. Stáhnou se hlavičky a bloky od protějsků. Ty se budou se ověřovat až se kompletně ověří celý řetězec bloků.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Neznámé. Synchronizace hlaviček (%1, %2)...</translation>
@@ -992,6 +1076,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Otevřít bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -999,6 +1087,14 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>Open wallet failed</source>
<translation>Otevření peněženky selhalo</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Varování otevření peněženky</translation>
</message>
<message>
<source>default wallet</source>
<translation>výchozí peněženka</translation>
@@ -1376,6 +1472,18 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' není platné URI. Místo toho použij 'bitcoin:'.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Nelze zpracovat žádost o platbu, protože podpora pro BIP70 není podporována.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Vzhledem k rozšířeným bezpečnostním nedostatkům v BIP70 se důrazně doporučuje, aby byly ignorovány veškeré obchodní pokyny pro přepínání peněženek.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Pokud obdržíte tuto chybu, měli byste požádat obchodníka, aby poskytl URI kompatibilní s BIP21.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>Neplatná platební adresa %1</translation>
@@ -1537,6 +1645,10 @@
<source>Error encoding URI into QR Code.</source>
<translation>Chyba při kódování URI do QR kódu.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>Podpora QR kódu není k dispozici.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>Ulož QR kód</translation>
@@ -1676,10 +1788,22 @@
<source>Synced Blocks</source>
<translation>Aktuálně bloků</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Mapovaný nezávislý - Autonomní Systém používaný pro rozšírení vzájemného výběru protějsků.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapovaný AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>Typ klienta</translation>
</message>
<message>
<source>Node window</source>
<translation>Okno uzlu</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Otevři soubor s ladicími záznamy %1 z aktuálního datového adresáře. U velkých žurnálů to může pár vteřin zabrat.</translation>
@@ -1891,6 +2015,18 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Volitelná částka, kterou požaduješ. Nech prázdné nebo nulové, pokud nepožaduješ konkrétní částku.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Volitelný popis který sa přidá k téjo nové přijímací adrese (pro jednoduchší identifikaci). Tenhle popis bude také přidán do výzvy k platbě.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Volitelná zpráva která se přidá k téjo platební výzvě a může být zobrazena odesílateli.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Vytvořit novou přijímací adresu</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Promaž obsah ze všech formulářových políček.</translation>
@@ -1905,7 +2041,7 @@
</message>
<message>
<source>Generate native segwit (Bech32) address</source>
<translation>Generovat nativní segwit adresu (Bench32)</translation>
<translation>Generovat nativní segwit adresu (Bech32)</translation>
</message>
<message>
<source>Requested payments history</source>
@@ -2140,6 +2276,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Dust:</source>
<translation>Prach:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Schovat nastavení poplatků transakce - transaction fee</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Když je zde měně transakcí než místa na bloky, mineři stejně tak relay-e mohou nasadit minimální poplatky. Zaplacením pouze minimálního poplatku je v pohodě, ale mějte na paměti že toto může mít za následek nikdy neověřenou transakci pokud zde bude více bitcoinových transakcí než může síť zvládnout.</translation>
@@ -2208,14 +2348,38 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 bloků)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Vytvořit bez podpisu</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Vytvořit částečně podepsanou Bitcoin transakci (Partially Signed Bitcoin Transaction - PSBT) k použtí kupříkladu s offline %1 peněženkou nebo s jinou kompatibilní PSBT hardware peněženkou.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>z peněženky '%1'</translation>
</message>
<message>
<source>%1 to '%2'</source>
<translation>%1 do '%2'</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 pro %2</translation>
<translation>%1 do %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Chcete naplánovat tuhle transakci?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Jsi si jistý, že tuhle transakci chceš poslat?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Zkontrolujte prosím svůj návrh transakce. Výsledkem bude částečně podepsaná bitcoinová transakce (PSBT), kterou můžete kopírovat a poté podepsat např. pomocí offline %1 peněženky nebo hardwarové peněženky kompatibilní s PSBT.</translation>
</message>
<message>
<source>or</source>
<translation>nebo</translation>
@@ -2240,13 +2404,33 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Total Amount</source>
<translation>Celková částka</translation>
</message>
<message>
<source>To review recipient list click "Show Details..."</source>
<translation>Chcete-li zkontrolovat seznam příjemců, klikněte na „Zobrazit podrobnosti ...“</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Potvrď odeslání mincí</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Potvrdit návrh transakce</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Zkopírovat PSBT do schránky</translation>
</message>
<message>
<source>Send</source>
<translation>Pošli</translation>
<translation>Odeslat</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT zkopírován</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Pouze sledovaný zůstatek:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
@@ -2343,6 +2527,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Remove this entry</source>
<translation>Smaž tento záznam</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>Částka k odeslání ve vybrané měně</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Poplatek se odečte od posílané částky. Příjemce tak dostane méně bitcoinů, než zadáš do pole Částka. Pokud vybereš více příjemců, tak se poplatek rovnoměrně rozloží.</translation>
@@ -2469,6 +2657,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>The Bitcoin address the message was signed with</source>
<translation>Bitcoinová adresa, kterou je zpráva podepsána</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Podepsaná zpráva na ověření</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>Podpis daný při podpisu zprávy</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Ověř zprávu, aby ses ujistil, že byla podepsána danou bitcoinovou adresou</translation>
@@ -2501,6 +2697,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Wallet unlock was cancelled.</source>
<translation>Odemčení peněženky bylo zrušeno.</translation>
</message>
<message>
<source>No error</source>
<translation>Bez chyby</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Soukromý klíč pro zadanou adresu není dostupný.</translation>
@@ -2675,6 +2875,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Output index</source>
<translation>Pořadí výstupu</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation>(Certifikát nebyl ověřen)</translation>
</message>
<message>
<source>Merchant</source>
<translation>Obchodník</translation>
@@ -2998,6 +3202,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Close wallet</source>
<translation>Zavřít peněženku</translation>
</message>
<message>
<source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
<translation>Opravdu chcete zavřít peněženku &lt;i&gt;%1&lt;/i&gt;?</translation>
</message>
<message>
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Zavření peněženky na příliš dlouhou dobu může vyústit v potřebu resynchronizace celého blockchainu pokud je zapnuté prořezávání.</translation>
@@ -3026,7 +3234,11 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
</message>
<message>
<source>Do you want to increase the fee?</source>
<translation>Chceš poplatek navýšit?</translation>
<translation>Chcete navýšit poplatek?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Chcete naplánovat tuhle transakci s navýšením poplatku?</translation>
</message>
<message>
<source>Current fee:</source>
@@ -3044,6 +3256,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Confirm fee bump</source>
<translation>Potvrď navýšení poplatku</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Nelze navrhnout transakci.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT zkopírováno</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Nemůžu podepsat transakci.</translation>
@@ -3210,6 +3430,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Corrupted block database detected</source>
<translation>Bylo zjištěno poškození databáze bloků</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>Soubor asmap nelze najít %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>Soubor asmap nelze analyzovat %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Chceš přestavět databázi bloků hned teď?</translation>
@@ -3266,6 +3494,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation>Selhala úvodní zevrubná prověrka. %s se ukončuje.</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation>Neplatné oprávnenie P2P: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation>Neplatná částka pro -%s=&lt;částka&gt;: '%s'</translation>
@@ -3282,6 +3514,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Zadaný adresář bloků "%s" neexistuje.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>Neznámý typ adresy '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Neznámý typ změny '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>Aktualizuje se txindex databáze</translation>
@@ -3290,6 +3530,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Loading P2P addresses...</source>
<translation>Načítám P2P adresy</translation>
</message>
<message>
<source>Error: Disk space is too low!</source>
<translation>Chyba: Místo na disku je příliš malé!</translation>
</message>
<message>
<source>Loading banlist...</source>
<translation>Načítám seznam klateb...</translation>
@@ -3398,6 +3642,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>V rámci -whitebind je třeba specifikovat i port: '%s'</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Režim prořezávání není kompatibilní s -blockfilterindex.</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation>Omezuji -maxconnections z %d na %d kvůli systémovým omezením.</translation>
@@ -3456,6 +3704,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Unable to generate initial keys</source>
<translation>Nepodařilo se mi vygenerovat počáteční klíče</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>Neznámá -blockfilterindex hodnota %s.</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>Kontroluji peněženku/y</translation>

View File

@@ -1788,6 +1788,14 @@
<source>Synced Blocks</source>
<translation>Synkroniserede blokke</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Afbildning fra Autonome Systemer (et Internet-Protocol-rutefindingsprefiks) til IP-adresser som bruges til at diversificere knudeforbindelser. Den engelske betegnelse er "asmap".</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Autonomt-System-afbildning</translation>
</message>
<message>
<source>User Agent</source>
<translation>Brugeragent</translation>

View File

@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Rechtsklick zum Bearbeiten der Adresse oder der Bezeichnung</translation>
<translation>Rechtsklick zum Bearbeiten der Adresse oder des Etiketts</translation>
</message>
<message>
<source>Create a new address</source>
@@ -31,7 +31,7 @@
</message>
<message>
<source>Enter address or label to search</source>
<translation>Zu suchende Adresse oder Bezeichnung eingeben</translation>
<translation>Zu suchende Adresse oder Beschreibung eingeben</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
@@ -75,7 +75,7 @@
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Adresse kopieren</translation>
<translation>&amp;Copy Address</translation>
</message>
<message>
<source>Copy &amp;Label</source>
@@ -658,7 +658,7 @@
</message>
<message>
<source>Dust:</source>
<translation>"Dust":</translation>
<translation>"Staub":</translation>
</message>
<message>
<source>After Fee:</source>
@@ -808,7 +808,7 @@
</message>
<message>
<source>Wallet Name</source>
<translation>Wallet Name</translation>
<translation>Wallet-Name</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
@@ -1012,7 +1012,7 @@
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(%n GB benötigt für komplette Blockchain)</numerusform><numerusform>(%n GB benötigt für komplette Blockchain)</numerusform></translation>
<translation><numerusform>(%n GB benötigt für komplette Blockchain)</numerusform><numerusform>(%n GB wird die komplette Blockchain benötigen)</numerusform></translation>
</message>
</context>
<context>
@@ -1067,7 +1067,7 @@
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 synchronisiert gerade. Es lädt Header und Blöcke von anderen Nodes und validiert sie bis zum Erreichen der Spitze der Blockkette.</translation>
<translation>%1 synchronisiert gerade. Es lädt Header und Blöcke von Gegenstellen und validiert sie bis zum Erreichen der Spitze der Blockkette.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
@@ -1097,7 +1097,7 @@
</message>
<message>
<source>default wallet</source>
<translation>Standard Wallet</translation>
<translation>Standard-Wallet</translation>
</message>
<message>
<source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
@@ -1124,7 +1124,7 @@
</message>
<message>
<source>Size of &amp;database cache</source>
<translation>Größe des &amp;Datenbankcaches</translation>
<translation>Größe des &amp;Datenbankpufferspeichers</translation>
</message>
<message>
<source>Number of script &amp;verification threads</source>
@@ -1407,7 +1407,7 @@
</message>
<message>
<source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source>
<translation>Gesamtbetrag aus unbestätigten Transaktionen, der noch nicht im aktuell verfügbaren Kontostand enthalten ist</translation>
<translation>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</translation>
</message>
<message>
<source>Immature:</source>
@@ -1758,7 +1758,7 @@
</message>
<message>
<source>Banned peers</source>
<translation>Gesperrte Peers</translation>
<translation>Gesperrte Gegenstellen</translation>
</message>
<message>
<source>Select a peer to view detailed information.</source>
@@ -1788,6 +1788,14 @@
<source>Synced Blocks</source>
<translation>Synchronisierte Blöcke</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Das zugeordnete autonome System zur Diversifizierung der Gegenstellen-Auswahl.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Zugeordnetes AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>User-Agent</translation>
@@ -2266,7 +2274,7 @@ Hinweis: Eine Gebühr von "100 Satoshis pro kB" bei einer Größe der Transaktio
</message>
<message>
<source>Dust:</source>
<translation>"Dust":</translation>
<translation>"Staub":</translation>
</message>
<message>
<source>Hide transaction fee settings</source>

View File

@@ -71,7 +71,7 @@
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Αυτές είναι οι Bitcoin διευθύνσεις για την λήψη πληρωμών. Χρησιμοποιήσε το κουμπί 'Δημιουργία νέας διεύθυνσης λήψεων' στο παράθυρο λήψεων για την δημιουργία νέας διεύθυνσης </translation>
<translation>Αυτές είναι οι Bitcoin διευθύνσεις για την λήψη πληρωμών. Χρησιμοποίησε το κουμπί 'Δημιουργία νέας διεύθυνσης λήψεων' στο παράθυρο λήψεων για την δημιουργία νέας διεύθυνσης </translation>
</message>
<message>
<source>&amp;Copy Address</source>
@@ -1773,6 +1773,14 @@
<source>Synced Blocks</source>
<translation>Συγχρονισμένα Μπλοκς</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Το χαρτογραφημένο Αυτόνομο Σύστημα που χρησιμοποιείται για τη διαφοροποίηση της επιλογής ομοτίμων.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Χαρτογραφημένο ως</translation>
</message>
<message>
<source>User Agent</source>
<translation>Agent χρήστη</translation>

View File

@@ -885,7 +885,7 @@
<translation type="unfinished">Confirmed</translation>
</message>
<message>
<location filename="../coincontroldialog.cpp" line="+53"/>
<location filename="../coincontroldialog.cpp" line="+54"/>
<source>Copy address</source>
<translation type="unfinished"></translation>
</message>
@@ -946,7 +946,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="+313"/>
<location line="+308"/>
<source>(%1 locked)</source>
<translation type="unfinished"></translation>
</message>
@@ -971,7 +971,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="+45"/>
<location line="+38"/>
<location line="+54"/>
<source>(no label)</source>
<translation type="unfinished"></translation>
@@ -990,7 +990,7 @@
<context>
<name>CreateWalletActivity</name>
<message>
<location filename="../walletcontroller.cpp" line="+209"/>
<location filename="../walletcontroller.cpp" line="+217"/>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation type="unfinished"></translation>
</message>
@@ -2787,7 +2787,7 @@
<name>SendCoinsDialog</name>
<message>
<location filename="../forms/sendcoinsdialog.ui" line="+14"/>
<location filename="../sendcoinsdialog.cpp" line="+622"/>
<location filename="../sendcoinsdialog.cpp" line="+618"/>
<source>Send Coins</source>
<translation>Send Coins</translation>
</message>
@@ -2974,7 +2974,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
<translation>S&amp;end</translation>
</message>
<message>
<location filename="../sendcoinsdialog.cpp" line="-533"/>
<location filename="../sendcoinsdialog.cpp" line="-528"/>
<source>Copy quantity</source>
<translation type="unfinished"></translation>
</message>
@@ -3024,7 +3024,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
<translation type="unfinished"></translation>
</message>
<message>
<location line="+100"/>
<location line="+95"/>
<source> from wallet &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
@@ -3159,7 +3159,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+125"/>
<location line="+118"/>
<source>Estimated to begin confirmation within %n block(s).</source>
<translation>
<numerusform>Estimated to begin confirmation within %n block.</numerusform>
@@ -3167,7 +3167,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
</translation>
</message>
<message>
<location line="+101"/>
<location line="+100"/>
<source>Warning: Invalid Bitcoin address</source>
<translation type="unfinished"></translation>
</message>
@@ -3518,7 +3518,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
<context>
<name>TrafficGraphWidget</name>
<message>
<location filename="../trafficgraphwidget.cpp" line="+81"/>
<location filename="../trafficgraphwidget.cpp" line="+82"/>
<source>KB/s</source>
<translation type="unfinished"></translation>
</message>
@@ -4115,7 +4115,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of &quot;100 satos
<context>
<name>WalletController</name>
<message>
<location filename="../walletcontroller.cpp" line="-211"/>
<location filename="../walletcontroller.cpp" line="-219"/>
<source>Close wallet</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -131,6 +131,10 @@
<source>Repeat new passphrase</source>
<translation>Ripetu la novan pasfrazon</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Montri pasfrazon</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Ĉifri la monujon</translation>
@@ -171,6 +175,26 @@
<source>Wallet encrypted</source>
<translation>La monujo estas ĉifrita</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>Enigi la novan pasfrazon por la monujo. &lt;br/&gt;Bonvolu uzi pasfrazon de &lt;b&gt;dek pli hazardaj signoj&lt;/b&gt;, aŭ &lt;b&gt;ok aŭ pli vortoj&lt;/b&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Enigi la malnovan pasfrazon kaj la novan pasfrazon por la monujo.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Monujo ĉifriĝota</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Via monujo estas ĉifriĝota.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Via monujo ĵus estas ĉifrata.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>GRAVE: antaŭaj sekur-kopioj de via monujo-dosiero estas forigindaj kiam vi havas nove kreitan ĉifritan monujo-dosieron. Pro sekureco, antaŭaj kopioj de la neĉifrita dosiero ne plu funkcios tuj kiam vi ekuzos la novan ĉifritan dosieron.</translation>
@@ -210,7 +234,11 @@
</context>
<context>
<name>BanTableModel</name>
</context>
<message>
<source>Banned Until</source>
<translation>Ekzilita ĝis</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
@@ -249,6 +277,10 @@
<source>&amp;About %1</source>
<translation>&amp;Pri %1</translation>
</message>
<message>
<source>Show information about %1</source>
<translation>Montri informojn pri %1</translation>
</message>
<message>
<source>About &amp;Qt</source>
<translation>Pri &amp;Qt</translation>
@@ -261,6 +293,10 @@
<source>&amp;Options...</source>
<translation>&amp;Agordoj...</translation>
</message>
<message>
<source>Modify configuration options for %1</source>
<translation>Ŝanĝi agordojn por %1</translation>
</message>
<message>
<source>&amp;Encrypt Wallet...</source>
<translation>Ĉifri &amp;Monujon...</translation>
@@ -277,6 +313,30 @@
<source>Open &amp;URI...</source>
<translation>Malfermi &amp;URI-on...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Krei Monujon...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Krei novan monujon</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Monujo:</translation>
</message>
<message>
<source>Click to disable network activity.</source>
<translation>Alklaki por malebligi retan aktivon.</translation>
</message>
<message>
<source>Network activity disabled.</source>
<translation>Retaj agadoj malebliĝas.</translation>
</message>
<message>
<source>Click to enable network activity again.</source>
<translation>Alklaki por denove ebligi retajn agadojn.</translation>
</message>
<message>
<source>Reindexing blocks on disk...</source>
<translation>Reindeksado de blokoj sur disko...</translation>
@@ -385,14 +445,50 @@
<source>Up to date</source>
<translation>Ĝisdata</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Malfermi la Monujon</translation>
</message>
<message>
<source>Open a wallet</source>
<translation>Malfermi monujon</translation>
</message>
<message>
<source>Close Wallet...</source>
<translation>Fermi la Monujon...</translation>
</message>
<message>
<source>Close wallet</source>
<translation>Fermi monujon</translation>
</message>
<message>
<source>default wallet</source>
<translation>defaŭlta monujo</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>&amp;Fenestro</translation>
</message>
<message>
<source>Zoom</source>
<translation>Zomi</translation>
</message>
<message>
<source>Main Window</source>
<translation>Ĉefa Fenestro</translation>
</message>
<message>
<source>Catching up...</source>
<translation>Ĝisdatigante...</translation>
</message>
<message>
<source>Error: %1</source>
<translation>Eraro: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>Averta: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -405,6 +501,11 @@
<translation>Sumo: %1
</translation>
</message>
<message>
<source>Wallet: %1
</source>
<translation>Monujo: %1</translation>
</message>
<message>
<source>Type: %1
</source>
@@ -446,6 +547,10 @@
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Coin Selection</source>
<translation>Monero-Elektaĵo</translation>
</message>
<message>
<source>Quantity:</source>
<translation>Kvanto:</translation>
@@ -585,10 +690,43 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Create wallet failed</source>
<translation>Krei monujon malsukcesis</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Averto pro krei monujon</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>Krei Monujon</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Monujo-Nomo</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Ĉifri Monujon</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Malebligi privatajn ŝlosilojn por ĉi tiu monujo. Monujoj kun malebligitaj privataj ŝlosiloj ne havos privatajn ŝlosilojn, kaj povas havi nek HD-semon nek importatajn privatajn ŝlosilojn. Ĉi tio estas ideale por nurspektaj monujoj.
</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Malebligi Privatajn Ŝlosilojn</translation>
</message>
<message>
<source>Create</source>
<translation>Krei</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -665,6 +803,10 @@
<source>version</source>
<translation>versio</translation>
</message>
<message>
<source>About %1</source>
<translation>Pri %1</translation>
</message>
<message>
<source>Command-line options</source>
<translation>Komandliniaj agordaĵoj</translation>
@@ -676,6 +818,10 @@
<source>Welcome</source>
<translation>Bonvenon</translation>
</message>
<message>
<source>Welcome to %1.</source>
<translation>Bonvenon al %1.</translation>
</message>
<message>
<source>Use the default data directory</source>
<translation>Uzi la defaŭltan dosierujon por datumoj</translation>
@@ -703,13 +849,45 @@
<source>Form</source>
<translation>Formularo</translation>
</message>
<message>
<source>Unknown...</source>
<translation>Nekonata...</translation>
</message>
<message>
<source>Last block time</source>
<translation>Horo de la lasta bloko</translation>
</message>
<message>
<source>Progress</source>
<translation>Progreso</translation>
</message>
<message>
<source>Progress increase per hour</source>
<translation>Hora pligrandigo da progreso</translation>
</message>
<message>
<source>calculating...</source>
<translation>kalkuladas...</translation>
</message>
<message>
<source>Hide</source>
<translation>Kaŝi</translation>
</message>
<message>
<source>Esc</source>
<translation>Esk</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 sinkronigadas. Ĝi elŝutos kapaĵojn kaj blokojn de samtavolanoj, kaj validigos ilin, ĝis ĝi atingas la pinton de la blokĉeno.</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Malfermi na la URI de bitmono</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -717,7 +895,23 @@
</context>
<context>
<name>OpenWalletActivity</name>
</context>
<message>
<source>Open wallet failed</source>
<translation>Malfermi monujon malsukcesis</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Malfermi monujon averto</translation>
</message>
<message>
<source>default wallet</source>
<translation>defaŭlta monujo</translation>
</message>
<message>
<source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Malfermadas Monujon &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
@@ -728,10 +922,26 @@
<source>&amp;Main</source>
<translation>&amp;efa</translation>
</message>
<message>
<source>Automatically start %1 after logging in to the system.</source>
<translation>Aŭtomate komenci na %1 post ensalutis en la sistemon.</translation>
</message>
<message>
<source>&amp;Start %1 on system login</source>
<translation>&amp;Komenci na %1 kiam ensaluti en la sistemon</translation>
</message>
<message>
<source>Size of &amp;database cache</source>
<translation>Dosiergrando de &amp;datumbasa kaŝmemoro</translation>
</message>
<message>
<source>Number of script &amp;verification threads</source>
<translation>Kvanto da skriptaj kaj kontroleraraj fadenoj</translation>
</message>
<message>
<source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
<translation>IP-adreso de prokurilo (ekz. IPv4: 127.0.0.1 / IPv6: ::1)</translation>
</message>
<message>
<source>Reset all client options to default.</source>
<translation>Reagordi ĉion al defaŭlataj valoroj.</translation>
@@ -855,6 +1065,10 @@
<source>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</source>
<translation>Eblas, ke la informoj videblaj ĉi tie estas eksdataj. Via monujo aŭtomate sinkoniĝas kun la bitmona reto kiam ili konektiĝas, sed tiu procezo ankoraŭ ne finfariĝis.</translation>
</message>
<message>
<source>Available:</source>
<translation>Disponebla:</translation>
</message>
<message>
<source>Your current spendable balance</source>
<translation>via aktuala elspezebla saldo</translation>
@@ -972,6 +1186,10 @@
<source>Error: Specified data directory "%1" does not exist.</source>
<translation>Eraro: la elektita dosierujo por datumoj "%1" ne ekzistas.</translation>
</message>
<message>
<source>Error: %1</source>
<translation>Eraro: %1</translation>
</message>
<message>
<source>unknown</source>
<translation>nekonata</translation>
@@ -1046,6 +1264,10 @@
<source>Current number of blocks</source>
<translation>Aktuala nombro de blokoj</translation>
</message>
<message>
<source>Wallet: </source>
<translation>Monujo:</translation>
</message>
<message>
<source>Received</source>
<translation>Ricevita</translation>
@@ -1110,7 +1332,35 @@
<source>Clear console</source>
<translation>Malplenigi konzolon</translation>
</message>
</context>
<message>
<source>1 &amp;hour</source>
<translation>1 &amp;horo</translation>
</message>
<message>
<source>1 &amp;day</source>
<translation>1 &amp;tago</translation>
</message>
<message>
<source>1 &amp;week</source>
<translation>1 &amp;semajno</translation>
</message>
<message>
<source>1 &amp;year</source>
<translation>1 &amp;jaro</translation>
</message>
<message>
<source>&amp;Unban</source>
<translation>&amp;Malekzili</translation>
</message>
<message>
<source>never</source>
<translation>neniam</translation>
</message>
<message>
<source>Unknown</source>
<translation>Nekonata</translation>
</message>
</context>
<context>
<name>ReceiveCoinsDialog</name>
<message>
@@ -1274,6 +1524,10 @@
<source>Transaction Fee:</source>
<translation>Krompago:</translation>
</message>
<message>
<source>Hide</source>
<translation>Kaŝi</translation>
</message>
<message>
<source>Send to multiple recipients at once</source>
<translation>Sendi samtempe al pluraj ricevantoj</translation>
@@ -1350,10 +1604,18 @@
<source>Transaction fee</source>
<translation>Krompago</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Totala Sumo</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Konfirmi sendon de bitmono</translation>
</message>
<message>
<source>Send</source>
<translation>Sendi</translation>
</message>
<message>
<source>The amount to pay must be larger than 0.</source>
<translation>La pagenda sumo devas esti pli ol 0.</translation>
@@ -1888,6 +2150,10 @@
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Fermi monujon</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
@@ -1898,7 +2164,11 @@
<source>Send Coins</source>
<translation>Sendi Bitmonon</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>defaŭlta monujo</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,10 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Estas son sus direcciones de Bitcoin para enviar pagos. Siempre verifique el monto y la dirección de recepción antes de enviar monedas.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Estas son sus direcciones de Bitcoin para recibir pagos. Utilice el botón de "Crear una nueva dirección de recibo" en la pestaña de recibos para crear nuevas direcciones.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>Copiar dirección</translation>
@@ -132,6 +136,10 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>Repeat new passphrase</source>
<translation>Repetir nueva contraseña</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Mostrar contraseña</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Encriptar la billetera</translation>
@@ -172,10 +180,30 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>Wallet encrypted</source>
<translation>Billetera encriptada</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>Introducir la nueva contraseña para la billetera. Por favor usa una contraseña de diez o mas caracteres aleatorios, o ocho o mas palabras.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Introducir la vieja contraseña y la nueva contraseña para la billetera.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>Recuerda que codificando tu billetera no garantiza mantener a salvo tus bitcoins en caso de tener virus en el computador.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Billetera para ser encriptada</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Tu billetera esta por ser encriptada</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Su billetera ahora esta encriptada.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>IMPORTANTE: todas las copias de seguridad anteriores que haya realizado de su archivo de billetera se deben reemplazar con el archivo de monedero cifrado recién generado. Por razones de seguridad, las copias de seguridad anteriores del archivo monedero sin encriptar serán inútiles tan pronto como comience a usar el nuevo monedero cifrado.</translation>
@@ -298,6 +326,14 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>Open &amp;URI...</source>
<translation>Abrir &amp;URL...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Crear Billetera...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crear una nueva billetera</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Billetera:</translation>
@@ -446,10 +482,30 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>Up to date</source>
<translation>A hoy</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Abrir billetera</translation>
</message>
<message>
<source>Open a wallet</source>
<translation>Abrir una billetera</translation>
</message>
<message>
<source>Close Wallet...</source>
<translation>Cerrar billetera...</translation>
</message>
<message>
<source>Close wallet</source>
<translation>Cerrar billetera</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Muestre el mensaje de ayuda %1 para obtener una lista con posibles opciones de línea de comandos de Bitcoin</translation>
</message>
<message>
<source>default wallet</source>
<translation>billetera predeterminada</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>Ventana</translation>
@@ -700,10 +756,26 @@ Exportar los datos en la pestaña actual a un archivo</translation>
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Create wallet failed</source>
<translation>Crear billetera falló</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Advertencia de crear billetera</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>Crear Billetera</translation>
</message>
<message>
<source>Create</source>
<translation>Crear</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -920,6 +992,10 @@ Exportar los datos en la pestaña actual a un archivo</translation>
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>default wallet</source>
<translation>billetera predeterminada</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
@@ -997,7 +1073,7 @@ Exportar los datos en la pestaña actual a un archivo</translation>
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation>(0 = auto, &lt;0 = deja muchos núcleos gratis)</translation>
<translation>(0 = auto, &lt;0 = deja esta cantidad de núcleos libres)</translation>
</message>
<message>
<source>W&amp;allet</source>
@@ -1736,6 +1812,10 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Un monto opcional para solicitar. Deje esto vacío o en cero para no solicitar una cantidad específica.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Crear una nueva dirección de recibo</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Borre todos los campos del formulario.</translation>
@@ -2026,6 +2106,10 @@ Tarifa de copia</translation>
<source>Transaction fee</source>
<translation>Comisión de transacción</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Monto total</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Confirmar el envió de monedas</translation>
@@ -2712,6 +2796,10 @@ Tarifa de copia</translation>
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Cerrar billetera</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
@@ -2762,7 +2850,11 @@ Tarifa de copia</translation>
<source>Could not commit transaction</source>
<translation>No se pudo confirmar la transacción</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>billetera predeterminada</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

View File

@@ -699,6 +699,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>Crea una billetera en blanco. Las billeteras en blanco inicialmente no tienen llaves privadas o texto. Las llaves privadas y las direcciones pueden ser importadas, o se puede establecer una semilla HD, más tarde.</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -803,6 +807,10 @@
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>Al hacer clic OK, %1 iniciará el proceso de descarga y procesará el blockchain completo de %4 (%2 GB), iniciando desde el la transacción más antigua %3 cuando %4 se ejecutó inicialmente.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>Revertir esta configuración requiere descargar la blockchain completa nuevamente. Es más rápido descargar la cadena completa y podarla después. Desactiva algunas funciones avanzadas.</translation>
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>El primer proceso de sincronización consume muchos recursos, y es posible que puedan ocurrir problemas de hardware que anteriormente no hayas notado. Cada vez que ejecutes %1 automáticamente se reiniciará el proceso de sincronización desde el punto que lo dejaste anteriormente.</translation>
@@ -993,7 +1001,7 @@
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation>(0 = auto, &lt;0 = deja muchos núcleos gratis)</translation>
<translation>(0 = auto, &lt;0 = deja esta cantidad de núcleos libres)</translation>
</message>
<message>
<source>W&amp;allet</source>

File diff suppressed because it is too large Load Diff

View File

@@ -69,6 +69,13 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección de recibo antes de transferir monedas.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation> 
 
Estas son sus direcciones de Bitcoin para recibir pagos. Utilice el botón 'Crear nueva dirección de recepción' en la pestaña de recepción para crear nuevas direcciones</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>Copiar dirección</translation>
@@ -131,6 +138,10 @@
<source>Repeat new passphrase</source>
<translation>Repita la nueva contraseña</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Mostrar la frase de contraseña</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Cifrar monedero</translation>
@@ -171,6 +182,18 @@
<source>Wallet encrypted</source>
<translation>Monedero cifrado</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>Ingrese la nueva contraseña para la billetera. Use una contraseña de diez o más caracteres aleatorios, u ocho o más palabras.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Billetera a ser cifrada</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Su billetera está ahora cifrada</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>IMPORTANTE: Algunas copias de seguridad que hayas hecho de tu archivo de billetera deberían ser reemplazadas con la billetera encriptada generada recientemente. Por razones de seguridad, las copias de seguridad previas del archivo de billetera sin cifrar serán inútiles tan pronto uses la nueva billetera encriptada.</translation>
@@ -273,6 +296,18 @@
<source>Open &amp;URI...</source>
<translation>Abrir URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Crear Billetera...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crear una nueva billetera</translation>
</message>
<message>
<source>Network activity disabled.</source>
<translation>Actividad de red deshabilitada.</translation>
</message>
<message>
<source>Reindexing blocks on disk...</source>
<translation>Reindexando bloques en disco...</translation>
@@ -385,6 +420,10 @@
<source>Close wallet</source>
<translation>Cerrar monedero</translation>
</message>
<message>
<source>default wallet</source>
<translation>billetera por defecto</translation>
</message>
<message>
<source>No wallets available</source>
<translation>Monederos no disponibles</translation>
@@ -695,6 +734,10 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>default wallet</source>
<translation>billetera por defecto</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
@@ -1464,7 +1507,11 @@
<source>Send Coins</source>
<translation>Enviar monedas</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>billetera por defecto</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
@@ -1475,6 +1522,10 @@
<source>Export the data in the current tab to a file</source>
<translation>Exportar a un archivo los datos de esta pestaña</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>Billetera de Respaldo</translation>
</message>
<message>
<source>Backup Failed</source>
<translation>Copia de seguridad fallida</translation>
@@ -1491,7 +1542,11 @@
<source>The wallet data was successfully saved to %1.</source>
<translation>Los datos de la billetera fueron guardados exitosamente al %1</translation>
</message>
</context>
<message>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>

View File

@@ -131,6 +131,10 @@
<source>Repeat new passphrase</source>
<translation>Korda uut parooli</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Näita salafraasi</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Krüpteeri rahakott</translation>
@@ -171,6 +175,30 @@
<source>Wallet encrypted</source>
<translation>Rahakott krüpteeritud</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>Sisesta rahakotile uus salafraas.&lt;br/&gt;Kasuta salafraasi millles on&lt;b&gt;kümme või rohkem juhuslikku sümbolit&lt;b&gt;,või&lt;b&gt;kaheksa või rohkem sõna&lt;b/&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Sisesta rahakoti vana salafraas ja uus salafraas.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>Pea meeles, et rahakoti krüpteerimine ei välista bitcoinide vargust, kui sinu arvuti on nakatunud pahavaraga.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Krüpteeritav rahakott</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Rahakott krüpteeritakse.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Rahakott krüpteeritud.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>TÄHTIS: Kõik varasemad rahakoti varundfailid tuleks üle kirjutada äsja loodud krüpteeritud rahakoti failiga. Turvakaalutlustel tühistatakse krüpteerimata rahakoti failid alates uue, krüpteeritud rahakoti, kasutusele võtust.</translation>
@@ -214,7 +242,11 @@
<source>IP/Netmask</source>
<translation>IP/Võrgumask</translation>
</message>
</context>
<message>
<source>Banned Until</source>
<translation>Blokeeritud kuni</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
@@ -253,6 +285,10 @@
<source>&amp;About %1</source>
<translation>&amp;Teave %1</translation>
</message>
<message>
<source>Show information about %1</source>
<translation>Näita informatsiooni %1 kohta</translation>
</message>
<message>
<source>About &amp;Qt</source>
<translation>Teave &amp;Qt kohta</translation>
@@ -265,6 +301,10 @@
<source>&amp;Options...</source>
<translation>&amp;Valikud...</translation>
</message>
<message>
<source>Modify configuration options for %1</source>
<translation>Muuda %1 seadeid</translation>
</message>
<message>
<source>&amp;Encrypt Wallet...</source>
<translation>&amp;Krüpteeri Rahakott</translation>
@@ -281,6 +321,18 @@
<source>Open &amp;URI...</source>
<translation>Ava &amp;URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Loo rahakott</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Loo uus rahakott</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Rahakott:</translation>
</message>
<message>
<source>Reindexing blocks on disk...</source>
<translation>Kõvakettal olevate plokkide reindekseerimine...</translation>

View File

@@ -357,6 +357,18 @@
<source>Reindexing blocks on disk...</source>
<translation>Blokeak diskoan berriro zerrendatzen...</translation>
</message>
<message>
<source>Proxy is &lt;b&gt;enabled&lt;/b&gt;: %1</source>
<translation>Proxya &lt;b&gt;gaituta&lt;/b&gt; dago : %1</translation>
</message>
<message>
<source>Send coins to a Bitcoin address</source>
<translation>Bidali txanponak Bitcoin helbide batera</translation>
</message>
<message>
<source>Backup wallet to another location</source>
<translation>Diru-zorroaren segurtasun-kopia beste leku batean.</translation>
</message>
<message>
<source>Change the passphrase used for wallet encryption</source>
<translation>Diruzorroa enkriptatzeko erabilitako pasahitza aldatu</translation>
@@ -381,6 +393,18 @@
<source>Show or hide the main Window</source>
<translation>Lehio nagusia erakutsi edo izkutatu</translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
<translation>Zure diru-zorroari dagozkion giltza pribatuak enkriptatu.</translation>
</message>
<message>
<source>Sign messages with your Bitcoin addresses to prove you own them</source>
<translation>Sinatu mezuak Bitcoinen helbideekin, jabetza frogatzeko.</translation>
</message>
<message>
<source>Verify messages to ensure they were signed with specified Bitcoin addresses</source>
<translation>Egiaztatu mesua Bitcoin helbide espezifikoarekin erregistratu direla ziurtatzeko</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Artxiboa</translation>
@@ -397,18 +421,78 @@
<source>Tabs toolbar</source>
<translation>Fitxen tresna-barra</translation>
</message>
<message>
<source>Show the list of used sending addresses and labels</source>
<translation> Bidalketa-helbideen eta etiketen zerrenda erakutsi</translation>
</message>
<message>
<source>Show the list of used receiving addresses and labels</source>
<translation>Harrera-helbideen eta etiketen zerrenda erakutsi</translation>
</message>
<message>
<source>&amp;Command-line options</source>
<translation>&amp;Komando-lerroaren aukerak</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network</source>
<translation><numerusform>%n konexio aktibo Bitcoin sarera</numerusform><numerusform>%n konexio aktibo Bitcoin sarera</numerusform></translation>
</message>
<message>
<source>Indexing blocks on disk...</source>
<translation>Blokeak diskoan indexatzen...</translation>
</message>
<message>
<source>Processing blocks on disk...</source>
<translation>Blokeak diskoan prozesatzen...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation><numerusform>Transakzioen historiako %n bloke prozesatuta.</numerusform><numerusform>Transakzioen historiako %n bloke prozesatuta.</numerusform></translation>
</message>
<message>
<source>%1 behind</source>
<translation>%1 atzetik</translation>
</message>
<message>
<source>Last received block was generated %1 ago.</source>
<translation>Jasotako azken blokea duela %1 sortu zen.</translation>
</message>
<message>
<source>Transactions after this will not yet be visible.</source>
<translation>Honen ondorengo transakzioak oraindik ez daude ikusgai.</translation>
</message>
<message>
<source>Error</source>
<translation>Akatsa</translation>
</message>
<message>
<source>Warning</source>
<translation>Abisua</translation>
</message>
<message>
<source>Information</source>
<translation>Informazioa</translation>
</message>
<message>
<source>Up to date</source>
<translation>Eguneratua</translation>
</message>
<message>
<source>Node window</source>
<translation>Adabegiaren leihoa</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Helbideak bidaltzen</translation>
</message>
<message>
<source>&amp;Receiving addresses</source>
<translation>&amp;Helbideak jasotzen</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Ireki bitcoin bat: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Diruzorroa zabaldu</translation>
@@ -425,10 +509,22 @@
<source>Close wallet</source>
<translation>Diruzorroa itxi</translation>
</message>
<message>
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
<message>
<source>No wallets available</source>
<translation>Ez dago diru-zorrorik eskura</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>&amp;Lehioa</translation>
</message>
<message>
<source>Minimize</source>
<translation>Txikitu</translation>
</message>
<message>
<source>Zoom</source>
<translation>Gerturatu</translation>
@@ -437,6 +533,14 @@
<source>Main Window</source>
<translation>Lehio nagusia</translation>
</message>
<message>
<source>%1 client</source>
<translation>%1 bezeroa</translation>
</message>
<message>
<source>Connecting to peers...</source>
<translation>Pareekin konektatzen...</translation>
</message>
<message>
<source>Catching up...</source>
<translation>Eguneratzen...</translation>
@@ -465,6 +569,12 @@
<source>Wallet: %1
</source>
<translation>Diruzorroa: %1
</translation>
</message>
<message>
<source>Type: %1
</source>
<translation>Mota: %1
</translation>
</message>
<message>
@@ -487,6 +597,18 @@
<source>Incoming transaction</source>
<translation>Sartutako transakzioa</translation>
</message>
<message>
<source>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</source>
<translation>HD gakoaren sorrera &lt;b&gt;gaituta&lt;/b&gt; dago</translation>
</message>
<message>
<source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
<translation>HD gakoaren sorrera &lt;b&gt;desgaituta&lt;/b&gt; dago</translation>
</message>
<message>
<source>Private key &lt;b&gt;disabled&lt;/b&gt;</source>
<translation>Gako pribatua &lt;b&gt;desgaitua&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>Zorroa &lt;b&gt;enkriptatuta&lt;/b&gt; eta &lt;b&gt;desblokeatuta&lt;/b&gt; dago une honetan</translation>
@@ -514,18 +636,42 @@
<source>Amount:</source>
<translation>Kopurua:</translation>
</message>
<message>
<source>Fee:</source>
<translation>Ordainketa:</translation>
</message>
<message>
<source>Dust:</source>
<translation>Hautsa:</translation>
</message>
<message>
<source>After Fee:</source>
<translation>Ordaindu ondoren:</translation>
</message>
<message>
<source>Change:</source>
<translation>Bueltak:</translation>
</message>
<message>
<source>Tree mode</source>
<translation>Zuhaitz modua</translation>
</message>
<message>
<source>List mode</source>
<translation>Zerrenda modua</translation>
</message>
<message>
<source>Amount</source>
<translation>Kopurua</translation>
</message>
<message>
<source>Received with label</source>
<translation>Etiketarekin jasoa</translation>
</message>
<message>
<source>Received with address</source>
<translation>Helbidearekin jasoa</translation>
</message>
<message>
<source>Date</source>
<translation>Data</translation>
@@ -546,6 +692,42 @@
<source>Copy label</source>
<translation>Etiketa kopiatu</translation>
</message>
<message>
<source>Copy amount</source>
<translation>zenbatekoaren kopia</translation>
</message>
<message>
<source>Copy transaction ID</source>
<translation>Kopiatu transakzioaren IDa</translation>
</message>
<message>
<source>Lock unspent</source>
<translation>Blokeatu erabili gabe</translation>
</message>
<message>
<source>Unlock unspent</source>
<translation>Desblokeatu gastatu gabe</translation>
</message>
<message>
<source>Copy quantity</source>
<translation>Kopia kopurua</translation>
</message>
<message>
<source>Copy bytes</source>
<translation>Kopiatu byte-ak</translation>
</message>
<message>
<source>Copy dust</source>
<translation>Kopiatu hautsa</translation>
</message>
<message>
<source>Copy change</source>
<translation>Kopiatu aldaketa</translation>
</message>
<message>
<source>(%1 locked)</source>
<translation>(%1 blokeatuta)</translation>
</message>
<message>
<source>yes</source>
<translation>bai</translation>
@@ -573,7 +755,11 @@
<source>Create wallet failed</source>
<translation>Diruzorroa sortzen hutsegitea</translation>
</message>
</context>
<message>
<source>Create wallet warning</source>
<translation>Diru-zorroa sortzearen buruzko oharra</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
@@ -588,6 +774,10 @@
<source>Encrypt Wallet</source>
<translation>Diruzorroa enkriptatu</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Desgaitu gako pribatuak</translation>
</message>
<message>
<source>Create</source>
<translation>Sortu</translation>
@@ -641,7 +831,15 @@
<source>version</source>
<translation>bertsioa</translation>
</message>
</context>
<message>
<source>About %1</source>
<translation>%1 inguru</translation>
</message>
<message>
<source>Command-line options</source>
<translation>Komando lerroaren aukerak</translation>
</message>
</context>
<context>
<name>Intro</name>
<message>
@@ -667,6 +865,10 @@
<source>Form</source>
<translation>Inprimakia</translation>
</message>
<message>
<source>Number of blocks left</source>
<translation>Gainerako blokeen kopurua.</translation>
</message>
<message>
<source>Unknown...</source>
<translation>Ezezaguna...</translation>
@@ -675,6 +877,10 @@
<source>Last block time</source>
<translation>Azken blokearen unea</translation>
</message>
<message>
<source>Progress</source>
<translation>Aurrerapena</translation>
</message>
<message>
<source>calculating...</source>
<translation>kalkulatzen...</translation>
@@ -683,9 +889,17 @@
<source>Hide</source>
<translation>Izkutatu</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Ireki bitcoin URIa</translation>
</message>
<message>
<source>URI:</source>
<translation>URI: </translation>
@@ -701,7 +915,15 @@
<source>Open wallet warning</source>
<translation>Diruzorroa irekitzen abisua</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
<message>
<source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Diru-zorroa irekitzen &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
@@ -716,6 +938,78 @@
<source>Size of &amp;database cache</source>
<translation>Databasearen cache tamaina</translation>
</message>
<message>
<source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
<translation>Proxyaren IP helbidea (IPv4: 127.0.0.1 / IPv6: ::1 adibidez )</translation>
</message>
<message>
<source>&amp;Hide tray icon</source>
<translation>&amp;Erretiluaren ikonoa ezkutatu</translation>
</message>
<message>
<source>Open Configuration File</source>
<translation>Ireki konfigurazio fitxategia</translation>
</message>
<message>
<source>Reset all client options to default.</source>
<translation>Bezeroaren aukera guztiak hasieratu.</translation>
</message>
<message>
<source>&amp;Reset Options</source>
<translation>&amp;Aukerak Hasieratu</translation>
</message>
<message>
<source>&amp;Network</source>
<translation>&amp;Sarea</translation>
</message>
<message>
<source>GB</source>
<translation>GB</translation>
</message>
<message>
<source>MiB</source>
<translation>MiB</translation>
</message>
<message>
<source>Expert</source>
<translation>Aditu</translation>
</message>
<message>
<source>Enable coin &amp;control features</source>
<translation>Diruaren &amp;kontrolaren ezaugarriak gaitu</translation>
</message>
<message>
<source>Map port using &amp;UPnP</source>
<translation>Portua mapeatu &amp;UPnP erabiliz</translation>
</message>
<message>
<source>Accept connections from outside.</source>
<translation>Kanpoko konexioak onartu</translation>
</message>
<message>
<source>Allow incomin&amp;g connections</source>
<translation>Sarbide konexioak baimendu</translation>
</message>
<message>
<source>Proxy &amp;IP:</source>
<translation>Proxyaren &amp;IP helbidea:</translation>
</message>
<message>
<source>&amp;Port:</source>
<translation>&amp;Portua:</translation>
</message>
<message>
<source>Port of the proxy (e.g. 9050)</source>
<translation>Proxy portua (9050 adibidez)</translation>
</message>
<message>
<source>IPv4</source>
<translation>IPv4</translation>
</message>
<message>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<source>Tor</source>
<translation>Tor</translation>
@@ -728,6 +1022,10 @@
<source>&amp;Display</source>
<translation>&amp;Pantaila</translation>
</message>
<message>
<source>User Interface &amp;language:</source>
<translation>Erabiltzaile-interfazearen &amp;hizkuntza:</translation>
</message>
<message>
<source>&amp;Unit to show amounts in:</source>
<translation>Zenbatekoa azaltzeko &amp;unitatea:</translation>
@@ -740,10 +1038,22 @@
<source>&amp;Cancel</source>
<translation>&amp;Ezeztatu</translation>
</message>
<message>
<source>default</source>
<translation>lehenetsi</translation>
</message>
<message>
<source>none</source>
<translation>Bat ere ez</translation>
</message>
<message>
<source>Confirm options reset</source>
<translation>Berretsi aukeren berrezarpena</translation>
</message>
<message>
<source>Client restart required to activate changes.</source>
<translation>Bezeroa berrabiarazi behar da aldaketak aktibatzeko.</translation>
</message>
<message>
<source>Configuration options</source>
<translation>Konfiguraketa aukerak</translation>
@@ -763,10 +1073,22 @@
<source>Form</source>
<translation>Inprimakia</translation>
</message>
<message>
<source>Watch-only:</source>
<translation>Ikusi-bakarrik:</translation>
</message>
<message>
<source>Available:</source>
<translation>Eskuragarri:</translation>
</message>
<message>
<source>Pending:</source>
<translation>Zai:</translation>
</message>
<message>
<source>Immature:</source>
<translation>Ez dago eskuragarri:</translation>
</message>
<message>
<source>Total:</source>
<translation>Guztira:</translation>
@@ -774,9 +1096,25 @@
</context>
<context>
<name>PaymentServer</name>
<message>
<source>Payment request error</source>
<translation>Ordainketa eskaera akatsa</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>Ordainketa helbide baliogabea %1</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>User Agent</source>
<translation>Erabiltzaile agentea</translation>
</message>
<message>
<source>Node/Service</source>
<translation>Adabegi / Zerbitzua</translation>
</message>
</context>
<context>
<name>QObject</name>
@@ -798,6 +1136,14 @@
</context>
<context>
<name>RPCConsole</name>
<message>
<source>User Agent</source>
<translation>Erabiltzaile agentea</translation>
</message>
<message>
<source>Node window</source>
<translation>Adabegiaren leihoa</translation>
</message>
<message>
<source>Last block time</source>
<translation>Azken blokearen unea</translation>
@@ -821,7 +1167,11 @@
<source>Copy label</source>
<translation>Etiketa kopiatu</translation>
</message>
</context>
<message>
<source>Copy amount</source>
<translation>zenbatekoaren kopia</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
@@ -844,7 +1194,11 @@
<source>Message</source>
<translation>Mezua</translation>
</message>
</context>
<message>
<source>Wallet</source>
<translation>Diru-zorroa</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
@@ -882,6 +1236,14 @@
<source>Amount:</source>
<translation>Kopurua:</translation>
</message>
<message>
<source>Fee:</source>
<translation>Ordainketa:</translation>
</message>
<message>
<source>After Fee:</source>
<translation>Ordaindu ondoren:</translation>
</message>
<message>
<source>Change:</source>
<translation>Bueltak:</translation>
@@ -906,6 +1268,26 @@
<source>Confirm the send action</source>
<translation>Bidalketa berretsi</translation>
</message>
<message>
<source>Copy quantity</source>
<translation>Kopia kopurua</translation>
</message>
<message>
<source>Copy amount</source>
<translation>zenbatekoaren kopia</translation>
</message>
<message>
<source>Copy bytes</source>
<translation>Kopiatu byte-ak</translation>
</message>
<message>
<source>Copy dust</source>
<translation>Kopiatu hautsa</translation>
</message>
<message>
<source>Copy change</source>
<translation>Kopiatu aldaketa</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Txanponen bidalketa berretsi</translation>
@@ -971,6 +1353,22 @@
<source>Alt+P</source>
<translation>Alt+P</translation>
</message>
<message>
<source>No error</source>
<translation>Ez dago errorerik</translation>
</message>
<message>
<source>Message signing failed.</source>
<translation>Errorea mezua sinatzean</translation>
</message>
<message>
<source>Message signed.</source>
<translation>Mezua sinatuta.</translation>
</message>
<message>
<source>Please check the signature and try again.</source>
<translation>Mesedez, begiratu sinadura eta saiatu berriro.</translation>
</message>
</context>
<context>
<name>TrafficGraphWidget</name>
@@ -981,6 +1379,10 @@
<source>Open until %1</source>
<translation>Zabalik %1 arte</translation>
</message>
<message>
<source>abandoned</source>
<translation>abandonatuta</translation>
</message>
<message>
<source>%1/unconfirmed</source>
<translation>%1/konfirmatu gabe</translation>
@@ -989,14 +1391,66 @@
<source>%1 confirmations</source>
<translation>%1 konfirmazio</translation>
</message>
<message>
<source>Status</source>
<translation>Egoera</translation>
</message>
<message>
<source>Date</source>
<translation>Data</translation>
</message>
<message>
<source>Source</source>
<translation>Iturria</translation>
</message>
<message>
<source>Generated</source>
<translation>Sortua</translation>
</message>
<message>
<source>From</source>
<translation>Tik</translation>
</message>
<message>
<source>unknown</source>
<translation>ezezaguna</translation>
</message>
<message>
<source>To</source>
<translation>Ra</translation>
</message>
<message>
<source>own address</source>
<translation>zure helbidea</translation>
</message>
<message>
<source>watch-only</source>
<translation>ikusi bakarrik</translation>
</message>
<message>
<source>label</source>
<translation>etiketa</translation>
</message>
<message>
<source>Credit</source>
<translation>Kreditua</translation>
</message>
<message>
<source>not accepted</source>
<translation>Onartu gabe</translation>
</message>
<message>
<source>Debit</source>
<translation>Zorrak</translation>
</message>
<message>
<source>Total debit</source>
<translation>Zor totala</translation>
</message>
<message>
<source>Total credit</source>
<translation>Kreditu totala</translation>
</message>
<message>
<source>Message</source>
<translation>Mezua</translation>
@@ -1059,6 +1513,10 @@
<source>Mined</source>
<translation>Meatua</translation>
</message>
<message>
<source>watch-only</source>
<translation>ikusi bakarrik</translation>
</message>
<message>
<source>(n/a)</source>
<translation>(n/a)</translation>
@@ -1146,6 +1604,14 @@
<source>Copy label</source>
<translation>Etiketa kopiatu</translation>
</message>
<message>
<source>Copy amount</source>
<translation>zenbatekoaren kopia</translation>
</message>
<message>
<source>Copy transaction ID</source>
<translation>Kopiatu transakzioaren IDa</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Komaz bereizitako artxiboa (*.csv)</translation>
@@ -1194,7 +1660,11 @@
<source>Send Coins</source>
<translation>Txanponak bidali</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

File diff suppressed because it is too large Load Diff

View File

@@ -181,7 +181,7 @@
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>Syötä uusi salasanalause lompakolle &lt;br/&gt;Ole hyvä ja käytä salasanalausetta, jossa on &lt;b&gt;kymmenen tai enemmän sattumanvaraisia merkkjä tai &lt;b&gt;kahdeksan tai enemmän sanoja&lt;/b&gt; .</translation>
<translation>Syötä uusi salasanalause lompakolle. &lt;br/&gt;Käytäthän salasanalausetta, jossa on &lt;b&gt;vähintään kymmenen sattumanvaraista merkkiä tai &lt;b&gt;ainakin kahdeksan sanaa&lt;/b&gt; .</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
@@ -339,11 +339,11 @@
</message>
<message>
<source>Click to disable network activity.</source>
<translation>Paina poistaaksesi verkkoyhteysilmaisin käytöstä.</translation>
<translation>Paina poistaaksesi verkkoyhteys käytöstä.</translation>
</message>
<message>
<source>Network activity disabled.</source>
<translation>Verkkoyhteysmittari pois käytöstä</translation>
<translation>Verkkoyhteydet pois käytöstä</translation>
</message>
<message>
<source>Click to enable network activity again.</source>
@@ -459,7 +459,7 @@
</message>
<message>
<source>Last received block was generated %1 ago.</source>
<translation>Viimeisin vastaanotettu lohko tuotettu %1.</translation>
<translation>Viimeisin vastaanotettu lohko tuotettu %1 sitten.</translation>
</message>
<message>
<source>Transactions after this will not yet be visible.</source>
@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Rahansiirtohistoria on ajan tasalla</translation>
</message>
<message>
<source>Node window</source>
<translation>Solmu ikkuna</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Avaa solmun diagnostiikka- ja vianmäärityskonsoli </translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Lähetysosoitteet</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;Vastaanotto-osoitteet</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Avaa bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Avaa lompakko</translation>
@@ -603,7 +615,7 @@
</message>
<message>
<source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
<translation>HD avaimen generointi on &lt;/b&gt;pois päältä&lt;/b&gt;</translation>
<translation>HD-avaimen luonti on &lt;/b&gt;pois päältä&lt;/b&gt;</translation>
</message>
<message>
<source>Private key &lt;b&gt;disabled&lt;/b&gt;</source>
@@ -783,7 +795,11 @@
<source>Create wallet failed</source>
<translation>Lompakon luonti epäonnistui</translation>
</message>
</context>
<message>
<source>Create wallet warning</source>
<translation>Luo lompakkovaroitus</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
@@ -802,6 +818,10 @@
<source>Encrypt Wallet</source>
<translation>Salaa lompakko</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Poista tämän lompakon yksityiset avaimet käytöstä. Lompakot, joissa yksityiset avaimet on poistettu käytöstä, eivät sisällä yksityisiä avaimia, eikä niissä voi olla HD-juurisanoja tai tuotuja yksityisiä avaimia. Tämä on ihanteellinen katselulompakkoihin.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Poista yksityisavaimet käytöstä</translation>
@@ -1041,6 +1061,14 @@
<source>Hide</source>
<translation>Piilota</translation>
</message>
<message>
<source>Esc</source>
<translation>Poistu</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 synkronoidaan parhaillaan. Se lataa tunnisteet ja lohkot vertaisilta ja vahvistaa ne, kunnes ne saavuttavat lohkon ketjun kärjen.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Tuntematon. Synkronoidaan tunnisteita (%1, %2%)...</translation>
@@ -1048,6 +1076,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Avaa bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1059,6 +1091,10 @@
<source>Open wallet failed</source>
<translation>Lompakon avaaminen epäonnistui</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Avoimen lompakon varoitus</translation>
</message>
<message>
<source>default wallet</source>
<translation>oletuslompakko</translation>
@@ -1096,7 +1132,7 @@
</message>
<message>
<source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
<translation>IP osoite proxille (esim. IPv4: 127.0.0.1 / IPv6: ::1)</translation>
<translation>Välityspalvelimen IP-osoite (esim. IPv4: 127.0.0.1 tai IPv6: ::1)</translation>
</message>
<message>
<source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
@@ -1128,7 +1164,7 @@
</message>
<message>
<source>Open Configuration File</source>
<translation>Avaa asetustiedosto.</translation>
<translation>Avaa asetustiedosto</translation>
</message>
<message>
<source>Reset all client options to default.</source>
@@ -1212,7 +1248,7 @@
</message>
<message>
<source>Proxy &amp;IP:</source>
<translation>Proxyn &amp;IP:</translation>
<translation>Välityspalvelimen &amp;IP:</translation>
</message>
<message>
<source>&amp;Port:</source>
@@ -1220,7 +1256,7 @@
</message>
<message>
<source>Port of the proxy (e.g. 9050)</source>
<translation>Proxyn Portti (esim. 9050)</translation>
<translation>Välityspalvelimen Portti (esim. 9050)</translation>
</message>
<message>
<source>Used for reaching peers via:</source>
@@ -1340,7 +1376,7 @@
</message>
<message>
<source>The supplied proxy address is invalid.</source>
<translation>Antamasi proxy-osoite on virheellinen.</translation>
<translation>Antamasi välityspalvelimen osoite on virheellinen.</translation>
</message>
</context>
<context>
@@ -1436,6 +1472,14 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' ei ole kelvollinen URI. Käytä 'bitcoin:' sen sijaan.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Maksupyyntöä ei voida käsitellä, koska BIP70: ei tueta.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>BIP70:n laajalle levinneiden tietoturvavirheiden vuoksi on erittäin suositeltavaa, että kaikki kauppiaan ohjeet lompakkojen vaihtamiseksi jätetään huomioimatta.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Tämän virheen saadessasi tulee sinun pyytää kauppiaalta BIP21 -yhteensopivaa URI-osoitetta.</translation>
@@ -1744,10 +1788,22 @@
<source>Synced Blocks</source>
<translation>Synkronoidut lohkot</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Kartoitettu autonominen järjestelmä, jota käytetään monipuolistamaan solmuvalikoimaa</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Kartoitettu AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>Käyttöliittymä</translation>
</message>
<message>
<source>Node window</source>
<translation>Solmun näkymä</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Avaa %1 -debug-loki tämänhetkisestä data-hakemistosta. Tämä voi viedä muutaman sekunnin suurille lokitiedostoille.</translation>
@@ -1959,6 +2015,18 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Valinnainen pyyntömäärä. Jätä tyhjäksi tai nollaksi jos et pyydä tiettyä määrää.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Valinnainen tarra, joka liitetään uuteen vastaanotto-osoitteeseen (jonka käytät laskun tunnistamiseen). Se liitetään myös maksupyyntöön.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Valinnainen viesti, joka on liitetty maksupyyntöön ja joka voidaan näyttää lähettäjälle.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation> &amp;Luo uusi vastaanotto-osoite</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Tyhjennä lomakkeen kaikki kentät.</translation>
@@ -2194,7 +2262,7 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
</message>
<message>
<source>Send to multiple recipients at once</source>
<translation>Lähetä usealla vastaanottajalle samanaikaisesti</translation>
<translation>Lähetä usealle vastaanottajalle kerralla</translation>
</message>
<message>
<source>Add &amp;Recipient</source>
@@ -2208,6 +2276,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Dust:</source>
<translation>Tomu:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation> Piilota siirtomaksuasetukset</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Mikäli lohkoissa ei ole tilaa kaikille siirtotapahtumille, voi louhijat sekä välittävät solmut pakottaa vähimmäispalkkion. Tämän vähimmäispalkkion maksaminen on täysin OK, mutta huomaa, että se saattaa johtaa siihen, ettei siirto vahvistu koskaan, jos bitcoin-siirtoja on enemmän kuin mitä verkko pystyy käsittelemään.</translation>
@@ -2276,6 +2348,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 lohkoa)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>L&amp;uo allekirjoittamaton</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Luo osittain allekirjoitetun bitcoin-siirtotapahtuman (PSBT) käytettäväksi mm. offline %1 lompakko tai PSBT-yhteensopiva hardware-lompakko.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation> lompakosta '%1'</translation>
@@ -2284,10 +2364,18 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>%1 to %2</source>
<translation>%1 to %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Haluatko laatia tämän siirron?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Oletko varma, että haluat lähettää?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Ole hyvä ja katso siirtotapahtuma ehdotuksesi. Tämä tuottaa osittain allekirjoitetun bitcoin-siirtotapahtuman (PSBT), jonka voit kopioida ja sitten allekirjoittaa esimerkiksi offline %1 lompakko tai PSBT-yhteensopiva hardware-lompakko.</translation>
</message>
<message>
<source>or</source>
<translation>tai</translation>
@@ -2304,6 +2392,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Transaction fee</source>
<translation>Siirtokulu</translation>
</message>
<message>
<source>Not signalling Replace-By-Fee, BIP-125.</source>
<translation>Ei signalointia Korvattavissa korkeammalla kululla, BIP-125.</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Yhteensä</translation>
@@ -2316,6 +2408,26 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Confirm send coins</source>
<translation>Vahvista kolikoiden lähetys</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Vahvista siirtoehdotus</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Kopioi PSBT leikepöydälle</translation>
</message>
<message>
<source>Send</source>
<translation>Lähetä</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT kopioitu</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Katselulompakon saldo:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Vastaanottajan osoite ei ole kelvollinen. Tarkista osoite.</translation>
@@ -2411,6 +2523,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Remove this entry</source>
<translation>Poista tämä alkio</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>Lähetettävä summa valitussa yksikössä</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Kulu vähennetään lähetettävästä määrästä. Saaja vastaanottaa vähemmän bitcoineja kuin merkitset Määrä-kenttään. Jos saajia on monia, kulu jaetaan tasan.</translation>
@@ -2537,6 +2653,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>The Bitcoin address the message was signed with</source>
<translation>Bitcoin-osoite jolla viesti on allekirjoitettu</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Allekirjoitettu viesti vahvistettavaksi</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>Viestin allekirjoittamisen yhteydessä annettu allekirjoitus</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Tarkista viestin allekirjoitus varmistaaksesi, että se allekirjoitettiin tietyllä Bitcoin-osoitteella</translation>
@@ -2569,6 +2693,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Wallet unlock was cancelled.</source>
<translation>Lompakon avaaminen peruttiin.</translation>
</message>
<message>
<source>No error</source>
<translation>Ei virhettä</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Yksityistä avainta syötetylle osoitteelle ei ole saatavilla.</translation>
@@ -2739,6 +2867,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Transaction virtual size</source>
<translation>Tapahtuman näennäiskoko</translation>
</message>
<message>
<source>Output index</source>
<translation>Ulostulon indeksi</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation> (Sertifikaattia ei vahvistettu)</translation>
</message>
<message>
<source>Merchant</source>
<translation>Kauppias</translation>
@@ -3092,6 +3228,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Do you want to increase the fee?</source>
<translation>Haluatko nostaa siirtomaksua?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Haluatko nostaa siirtomaksua siirtoon?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>Nykyinen palkkio:</translation>
@@ -3108,6 +3248,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Confirm fee bump</source>
<translation>Vahvista palkkion korotus</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation> Siirtoa ei voida laatia.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT kopioitu</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Siirtoa ei voida allekirjoittaa.</translation>
@@ -3198,6 +3346,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>Ei voida lukita data-hakemistoa %s. %s on luultavasti jo käynnissä.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>Ei voida tarjota tiettyjä yhteyksiä, ja antaa addrmanin löytää lähteviä yhteyksiä samanaikaisesti.</translation>
</message>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Virhe luettaessa %s! Avaimet luetttiin oikein, mutta rahansiirtotiedot tai osoitekirjan sisältö saattavat olla puutteellisia tai vääriä.</translation>
@@ -3254,6 +3406,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Cannot resolve -%s address: '%s'</source>
<translation>-%s -osoitteen '%s' selvittäminen epäonnistui</translation>
</message>
<message>
<source>Change index out of range</source>
<translation>Vaihda hakemisto alueen ulkopuolelle</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation>Konfigurointiasetuksen %s käyttöön vain %s -verkossa, kun osassa [%s].</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation>Tekijänoikeus (C) %i-%i</translation>
@@ -3262,6 +3422,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Corrupted block database detected</source>
<translation>Vioittunut lohkotietokanta havaittu</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>Asmap-tiedostoa %s ei löytynyt</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>Asmap-tiedostoa %s ei voitu jäsentää</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Haluatko uudelleenrakentaa lohkotietokannan nyt?</translation>
@@ -3278,6 +3446,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Error loading %s</source>
<translation>Virhe ladattaessa %s</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation>Virhe %s:n lataamisessa: Yksityiset avaimet voidaan poistaa käytöstä vain luomisen aikana</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation>Virhe ladattaessa %s: Lompakko vioittunut</translation>
@@ -3330,6 +3502,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Määrättyä lohkohakemistoa "%s" ei ole olemassa.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>Tuntematon osoitetyyppi '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Tuntematon vaihtorahatyyppi '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>Päivitetään txindex -tietokantaa</translation>
@@ -3406,6 +3586,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Virhe: Saapuvien yhteyksien kuuntelu epäonnistui (kuuntelu palautti virheen %s)</translation>
</message>
<message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Virheellinen summa -maxtxfee =: '%s' (täytyy olla vähintään %s minrelay-kulu, jotta estetään jumiutuneet siirtotapahtumat)</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>Siirtomäärä on liian pieni lähetettäväksi kulun vähentämisen jälkeen.</translation>
@@ -3500,6 +3684,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Unable to create the PID file '%s': %s</source>
<translation>PID-tiedostoa '%s' ei voitu luoda: %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation>Alkuavaimia ei voi luoda</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>Tuntematon -lohkosuodatusindeksiarvo %s.</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>Varmistetaan lompakko(ja)...</translation>
@@ -3550,7 +3742,7 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation>Tämä on lähetyksestä maksettava maksu jonka maksat</translation>
<translation>Tämä on se siirtomaksu, jonka maksat, mikäli lähetät siirron.</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
@@ -3572,10 +3764,18 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Insufficient funds</source>
<translation>Lompakon saldo ei riitä</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use -upgradewallet=169900 or -upgradewallet with no version specified.</source>
<translation>Muuta kuin HD-jaettua lompakkoa ei voi päivittää ilman päivitystä tukemaan esijaettua avainvarastoa. Käytä -upgradewallet = 169900 tai -upgradewallet ilman määritettyä versiota.</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation>Siirtomaksun arviointi epäonnistui. Odota muutama lohko tai käytä -fallbackfee -valintaa..</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>Varoitus: lompakosta {%s} tunnistetut yksityiset avaimet, on poistettu käytöstä</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>Hakemistoon '%s' ei voida kirjoittaa. Tarkista käyttöoikeudet.</translation>

View File

@@ -11,7 +11,7 @@
</message>
<message>
<source>&amp;New</source>
<translation>Bago</translation>
<translation>&amp;Bago</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>Kopyahin</translation>
<translation>&amp;Kopyahin</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation>Isara</translation>
<translation>&amp;Isara</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
@@ -69,6 +69,10 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Ito ang iyong mga Bitcoin address para sa pagpapadala ng bayad. Laging suriin ang halaga at ang address na tatanggap bago magpadala ng coins.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Ito ang iyong mga Bitcoin address para sa pagtanggap ng mga pagbabayad. Gamitin ang pindutang 'Lumikha ng bagong address sa pagtanggap' sa tab na tumanggap upang lumikha ng mga bagong address.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>Kopyahin ang address</translation>
@@ -131,6 +135,10 @@
<source>Repeat new passphrase</source>
<translation>Ulitin ang bagong passphrase</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Ipakita ang Passphrase</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>I-encrypt ang walet.</translation>
@@ -171,6 +179,30 @@
<source>Wallet encrypted</source>
<translation>Naka-encrypt ang walet.</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>Ipasok ang bagong passphrase para sa wallet.&lt;br/&gt;Mangyaring gumamit ng isang passphrase na&lt;b&gt; sampu o higit pang mga random na character&lt;/b&gt;, o &lt;b&gt;walo o higit pang mga salita&lt;/b&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Ipasok ang lumang passphrase at bagong passphrase para sa pitaka.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>Tandaan na ang pag-encrypt ng iyong pitaka ay hindi maaaring ganap na maprotektahan ang iyong mga bitcoin mula sa pagnanakaw ng malware na nahahawa sa iyong computer.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Ang naka-encrypt na wallet</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Malapit na ma-encrypt ang iyong pitaka.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Ang iyong wallet ay naka-encrypt na ngayon.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>MAHALAGA: Anumang nakaraang mga backup na ginawa mo sa iyong walet file ay dapat mapalitan ng bagong-buong, naka-encrypt na walet file. Para sa mga kadahilanang pangseguridad, ang mga nakaraang pag-backup ng hindi naka-encrypt na walet file ay mapagwawalang-silbi sa sandaling simulan mong gamitin ang bagong naka-encrypt na walet.</translation>
@@ -293,6 +325,14 @@
<source>Open &amp;URI...</source>
<translation>Buksan ang URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Gumawa ng Pitaka</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Gumawa ng Bagong Pitaka</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Walet:</translation>
@@ -397,6 +437,10 @@
<source>&amp;Command-line options</source>
<translation>Mga opsyon ng command-line</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network</source>
<translation><numerusform>%n aktibong koneksyon sa Bitcoin network</numerusform><numerusform>%n aktibong koneksyon sa Bitcoin network</numerusform></translation>
</message>
<message>
<source>Indexing blocks on disk...</source>
<translation>I-ni-index ang mga blocks sa disk...</translation>
@@ -405,6 +449,10 @@
<source>Processing blocks on disk...</source>
<translation>Pinoproseso ang mga blocks sa disk...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation><numerusform>Processed %n block of transaction history.</numerusform><numerusform>Processed %n blocks of transaction history.</numerusform></translation>
</message>
<message>
<source>%1 behind</source>
<translation>%1 sa likuran</translation>
@@ -433,6 +481,14 @@
<source>Up to date</source>
<translation>Napapanahon</translation>
</message>
<message>
<source>Node window</source>
<translation>Bintana ng Node</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Open node debugging and diagnostic console</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>Mga address para sa pagpapadala</translation>
@@ -441,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>Mga address para sa pagtanggap</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Open a bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Buksan ang Walet</translation>
@@ -723,10 +783,58 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Gumagawa ng Pitaka %1</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>Nabigo ang Pag likha ng Pitaka</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Gumawa ng Babala ng Pitaka</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>Gumawa ng Pitaka</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Pangalan ng Pitaka</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Encrypt Wallet</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Huwag paganahin ang Privbadong susi</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation>Gumawa ng Blankong Pitaka</translation>
</message>
<message>
<source>Create</source>
<translation>Gumawa</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -838,6 +946,10 @@
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>Pagkatapos mong mag-click ng OK, %1 ay magsisimulang mag-download at mag-proseso ng buong blockchain (%2GB) magmula sa pinakaunang transaksyon sa %3 nuong ang %4 ay paunang nilunsad.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</translation>
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>Maraming pangangailangan ang itong paunang sinkronisasyon at maaaring ilantad ang mga problema sa hardware ng iyong computer na hindi dating napansin. Tuwing pagaganahin mo ang %1, ito'y magpapatuloy mag-download kung saan ito tumigil.</translation>
@@ -858,6 +970,10 @@
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
<source>Discard blocks after verification, except most recent %1 GB (prune)</source>
<translation>Discard blocks after verification, except most recent %1 GB (prune)</translation>
</message>
<message>
<source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
<translation>Kahit na %1 GB na datos ay maiimbak sa direktoryong ito, ito ay lalaki sa pagtagal.</translation>
@@ -886,7 +1002,15 @@
<source>%n GB of free space available</source>
<translation><numerusform>Mayroong %n GB na libreng lugar</numerusform><numerusform>Mayroong %n GB na libreng lugar</numerusform></translation>
</message>
</context>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation><numerusform>(of %n GB needed)</numerusform><numerusform>(of %n GB needed)</numerusform></translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(%n GB needed for full chain)</numerusform><numerusform>(%n GB needed for full chain)</numerusform></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -933,6 +1057,14 @@
<source>Hide</source>
<translation>Itago</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Hindi alam. S-in-i-sync ang mga Header (%1, %2%)...</translation>
@@ -940,6 +1072,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Open bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -947,6 +1083,14 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>Open wallet failed</source>
<translation>Nabigo ang bukas na pitaka</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Buksan ang babala sa pitaka</translation>
</message>
<message>
<source>default wallet</source>
<translation>walet na default</translation>
@@ -1050,6 +1194,10 @@
<source>MiB</source>
<translation>MiB</translation>
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation>(0 = auto, &lt;0 = leave that many cores free)</translation>
</message>
<message>
<source>W&amp;allet</source>
<translation>Walet</translation>
@@ -1320,6 +1468,18 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>Ang 'bitcoin://' ay hindi wastong URI. Sa halip, gamitin ang 'bitcoin:'.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Cannot process payment request because BIP70 is not supported.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>Hindi wasto and address ng bayad %1</translation>
@@ -1481,6 +1641,10 @@
<source>Error encoding URI into QR Code.</source>
<translation>Kamalian sa pag-e-encode ng URI sa QR Code.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>Hindi magagamit ang suporta ng QR code.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>I-save ang QR Code</translation>
@@ -1620,10 +1784,22 @@
<source>Synced Blocks</source>
<translation>Mga block na na-sync</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Ginamit ang na-map na Autonomous System para sa pag-iba-iba ng pagpipilian ng kapwa.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapa sa AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>Ahente ng User</translation>
</message>
<message>
<source>Node window</source>
<translation>Bintana ng Node</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Buksan ang %1 debug log file mula sa kasalukuyang directoryo ng datos. Maaari itong tumagal ng ilang segundo para sa mga malalaking log file.</translation>
@@ -1835,6 +2011,18 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Opsyonal na halaga upang humiling. Iwanan itong walang laman o zero upang hindi humiling ng tiyak na halaga.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Isang opsyonal na label upang maiugnay sa bagong address ng pagtanggap (ginamit mo upang makilala ang isang invoice). Nakalakip din ito sa kahilingan sa pagbabayad.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Isang opsyonal na mensahe na naka-attach sa kahilingan sa pagbabayad at maaaring ipakita sa nagpadala.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp; Lumikha ng bagong address sa pagtanggap</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Burahin ang laman ng lahat ng patlang ng form.</translation>
@@ -2084,6 +2272,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Dust:</source>
<translation>Dust:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Itago ang mga Setting ng bayad sa Transaksyon</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Kapag mas kaunti ang dami ng transaksyon kaysa sa puwang sa mga blocks, ang mga minero pati na rin ang mga relaying node ay maaaring magpatupad ng minimum na bayad. Ang pagbabayad lamang ng minimum na bayad na ito ay maayos, ngunit malaman na maaari itong magresulta sa hindi kailanmang nagkukumpirmang transaksyon sa sandaling magkaroon ng higit na pangangailangan para sa mga transaksyon ng bitcoin kaysa sa kayang i-proseso ng network.</translation>
@@ -2152,10 +2344,18 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 mga block)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Lumikha ng Unsigned</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 sa %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Nais mo bang i-draft ang transaksyong ito?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Sigurado ka bang nais mong magpadala?</translation>
@@ -2184,10 +2384,34 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Total Amount</source>
<translation>Kabuuang Halaga</translation>
</message>
<message>
<source>To review recipient list click "Show Details..."</source>
<translation>Upang suriin ang listahan ng tatanggap i-click ang "Ipakita ang Mga Detalye ..."</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Kumpirmahin magpadala ng coins</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Kumpirmahin ang panukala sa transaksyon</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Kopyahin ang PSBT sa clipboard</translation>
</message>
<message>
<source>Send</source>
<translation>Ipadala</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>Kinopya ang PSBT</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Balanse lamang sa panonood:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Ang address ng tatanggap ay hindi wasto. Mangyaring suriin muli.</translation>
@@ -2283,6 +2507,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Remove this entry</source>
<translation>Alisin ang entry na ito</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>The amount to send in the selected unit</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Ibabawas ang bayad mula sa halagang ipapadala. Ang tatanggap ay makakatanggap ng mas kaunting mga bitcoin kaysa sa pinasok mo sa patlang ng halaga. Kung napili ang maraming tatanggap, ang bayad ay paghihiwalayin.</translation>
@@ -2409,6 +2637,14 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>The Bitcoin address the message was signed with</source>
<translation>Ang Bitcoin address na pumirma sa mensahe</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>The signed message to verify</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>The signature given when the message was signed</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Tiyakin ang katotohanan ng mensahe upang siguruhin na ito'y napirmahan ng tinukoy na Bitcoin address</translation>
@@ -2441,6 +2677,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Wallet unlock was cancelled.</source>
<translation>Kinansela ang pag-unlock ng walet.</translation>
</message>
<message>
<source>No error</source>
<translation>Walang Kamalian</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Hindi magagamit ang private key para sa pinasok na address.</translation>
@@ -2615,6 +2855,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Output index</source>
<translation>Output index</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation> (Certificate was not verified)</translation>
</message>
<message>
<source>Merchant</source>
<translation>Mangangalakal</translation>
@@ -2938,6 +3182,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Close wallet</source>
<translation>Isara ang walet</translation>
</message>
<message>
<source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
<translation>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</translation>
</message>
<message>
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Ang pagsasara ng walet nang masyadong matagal ay maaaring magresulta sa pangangailangan ng pag-resync sa buong chain kung pinagana ang pruning.</translation>
@@ -2968,6 +3216,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Do you want to increase the fee?</source>
<translation>Nais mo bang dagdagan ang bayad?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Do you want to draft a transaction with fee increase?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>Kasalukuyang bayad:</translation>
@@ -2984,6 +3236,14 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Confirm fee bump</source>
<translation>Kumpirmahin ang fee bump</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Hindi ma-draft ang transaksyon</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>Kinopya ang PSBT</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Hindi mapirmahan ang transaksyon.</translation>
@@ -3074,6 +3334,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>Hindi makakuha ng lock sa direktoryo ng data %s. Malamang na tumatakbo ang %s.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>Cannot provide specific connections and have addrman find outgoing connections at the same.</translation>
</message>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Error sa pagbabasa %s! Nabasa nang tama ang lahat ng mga key, ngunit ang data ng transaksyon o mga entry sa address book ay maaaring nawawala o hindi tama.</translation>
@@ -3146,6 +3410,14 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Corrupted block database detected</source>
<translation>Sirang block database ay napansin</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>Could not find asmap file %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>Could not parse asmap file %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Nais mo bang muling itayo ang block database?</translation>
@@ -3198,6 +3470,14 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation>Hindi tamang o walang nahanap na genesis block. Maling datadir para sa network?</translation>
</message>
<message>
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation>Initialization sanity check failed. %s is shutting down.</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation>Invalid P2P permission: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation>Hindi wastong halaga para sa -%s=&lt;amount&gt;: '%s'</translation>
@@ -3214,6 +3494,14 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Ang tinukoy na direktoryo ng mga block "%s" ay hindi umiiral.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>Unknown address type '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Unknown change type '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>Nag-u-upgrade ng txindex database</translation>
@@ -3222,6 +3510,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Loading P2P addresses...</source>
<translation>Nag-lo-load ng mga P2P address...</translation>
</message>
<message>
<source>Error: Disk space is too low!</source>
<translation>Error: Disk space is too low!</translation>
</message>
<message>
<source>Loading banlist...</source>
<translation>Nag-lo-load ng banlist...</translation>
@@ -3330,6 +3622,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>Kailangang tukuyin ang port na may -whitebind: '%s'</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Prune mode is incompatible with -blockfilterindex.</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation>Pagbabawas ng -maxconnections mula sa %d hanggang %d, dahil sa mga limitasyon ng systema.</translation>
@@ -3388,6 +3684,10 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>Unable to generate initial keys</source>
<translation>Hindi makagawa ng paunang mga key</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>Unknown -blockfilterindex value %s.</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>Nag-ve-verify ng mga walet...</translation>

View File

@@ -1788,6 +1788,14 @@
<source>Synced Blocks</source>
<translation>Blocs synchronisés</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Le système autonome mappé utilisé pour diversifier la sélection des pairs.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>SA mappé</translation>
</message>
<message>
<source>User Agent</source>
<translation>Agent utilisateur</translation>

3792
src/qt/locale/bitcoin_ga.ts Normal file

File diff suppressed because it is too large Load Diff

194
src/qt/locale/bitcoin_gd.ts Normal file
View File

@@ -0,0 +1,194 @@
<TS language="gd" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Dèan briogadh deas airson seòladh no bileag a dheasachadh</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Cruthaich seòladh ùr</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>Dèan lethbhreac den t-seòladh a chaidh a thaghadh an-dràsta gu cairt-bhòrd an t-siostaim</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>Thoir às an seòladh a chaidh a thaghadh an-dràsta bhon liosta</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation>Tagh an seòladh airson buinn a chuir thuige</translation>
</message>
<message>
<source>Sending addresses</source>
<translation>A cur sheòlaidhean</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Address</source>
<translation>Seòladh</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
</context>
<context>
<name>BanTableModel</name>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Error</source>
<translation>Mearachd</translation>
</message>
<message>
<source>Warning</source>
<translation>Rabhadh</translation>
</message>
<message>
<source>Information</source>
<translation>Fiosrachadh</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Wallet Name</source>
<translation>Ainm Wallet</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
<message>
<source>name</source>
<translation>ainm</translation>
</message>
</context>
<context>
<name>HelpMessageDialog</name>
</context>
<context>
<name>Intro</name>
<message>
<source>Error</source>
<translation>Mearachd</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
<source>Form</source>
<translation>Fhoirm</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Error</source>
<translation>Mearachd</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>
<source>Form</source>
<translation>Fhoirm</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
</context>
<context>
<name>PeerTableModel</name>
</context>
<context>
<name>QObject</name>
</context>
<context>
<name>QRImageWidget</name>
</context>
<context>
<name>RPCConsole</name>
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address</source>
<translation>Seòladh</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
</context>
<context>
<name>SendCoinsDialog</name>
</context>
<context>
<name>SendCoinsEntry</name>
</context>
<context>
<name>ShutdownWindow</name>
</context>
<context>
<name>SignVerifyMessageDialog</name>
</context>
<context>
<name>TrafficGraphWidget</name>
</context>
<context>
<name>TransactionDesc</name>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Address</source>
<translation>Seòladh</translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
</context>
<context>
<name>WalletController</name>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
</context>
<context>
<name>WalletView</name>
</context>
<context>
<name>bitcoin-core</name>
</context>
</TS>

File diff suppressed because it is too large Load Diff

346
src/qt/locale/bitcoin_gu.ts Normal file
View File

@@ -0,0 +1,346 @@
<TS language="gu" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Right-click to edit address or label</translation>
</message>
<message>
<source>Create a new address</source>
<translation> </translation>
</message>
<message>
<source>&amp;New</source>
<translation></translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation> િ િ </translation>
</message>
<message>
<source>&amp;Copy</source>
<translation> </translation>
</message>
<message>
<source>C&amp;lose</source>
<translation>&amp; </translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>િ </translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation> </translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation> િ િ </translation>
</message>
<message>
<source>&amp;Export</source>
<translation>&amp; િ </translation>
</message>
<message>
<source>&amp;Delete</source>
<translation>&amp; </translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation>િ </translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation>િ </translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation>&amp; </translation>
</message>
<message>
<source>Sending addresses</source>
<translation> િ ..</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation> </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> , િ િ .</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation> . </translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp; </translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation> &amp; </translation>
</message>
<message>
<source>&amp;Edit</source>
<translation>&amp; </translation>
</message>
<message>
<source>Export Address List</source>
<translation> િ િ </translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation>િ િ (.)</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>િ િ િ </translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation>િ</translation>
</message>
<message>
<source>Address</source>
<translation></translation>
</message>
<message>
<source>(no label)</source>
<translation>( )</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation> </translation>
</message>
<message>
<source>Enter passphrase</source>
<translation> </translation>
</message>
<message>
<source>New passphrase</source>
<translation> </translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation> </translation>
</message>
<message>
<source>Show passphrase</source>
<translation> </translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>િ </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation> </translation>
</message>
<message>
<source>Unlock wallet</source>
<translation> </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation> િિ </translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation>િિ </translation>
</message>
<message>
<source>Change passphrase</source>
<translation> </translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation>િ </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>: િ , િ !</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation> િ ?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation> િ </translation>
</message>
</context>
<context>
<name>BanTableModel</name>
</context>
<context>
<name>BitcoinGUI</name>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>(no label)</source>
<translation> </translation>
</message>
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
</context>
<context>
<name>HelpMessageDialog</name>
</context>
<context>
<name>Intro</name>
</context>
<context>
<name>ModalOverlay</name>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
</context>
<context>
<name>OptionsDialog</name>
</context>
<context>
<name>OverviewPage</name>
</context>
<context>
<name>PaymentServer</name>
</context>
<context>
<name>PeerTableModel</name>
</context>
<context>
<name>QObject</name>
</context>
<context>
<name>QRImageWidget</name>
</context>
<context>
<name>RPCConsole</name>
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address</source>
<translation></translation>
</message>
<message>
<source>Label</source>
<translation>િ</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation>િ</translation>
</message>
<message>
<source>(no label)</source>
<translation> </translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>(no label)</source>
<translation> </translation>
</message>
</context>
<context>
<name>SendCoinsEntry</name>
</context>
<context>
<name>ShutdownWindow</name>
</context>
<context>
<name>SignVerifyMessageDialog</name>
</context>
<context>
<name>TrafficGraphWidget</name>
</context>
<context>
<name>TransactionDesc</name>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation>િ</translation>
</message>
<message>
<source>(no label)</source>
<translation> </translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file (*.csv)</source>
<translation>િ િ </translation>
</message>
<message>
<source>Label</source>
<translation>િ</translation>
</message>
<message>
<source>Address</source>
<translation></translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>િ િ િ </translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
</context>
<context>
<name>WalletController</name>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation>&amp; િ </translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation> િ િ </translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
</context>
</TS>

View File

@@ -141,7 +141,7 @@
</message>
<message>
<source>Encrypt wallet</source>
<translation>הצפנת הארנק</translation>
<translation>הצפן ארנק</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
@@ -179,6 +179,31 @@
<source>Wallet encrypted</source>
<translation>הארנק מוצפן</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>הקש סיסמה חדשה לארנק.
השתמש בסיסמה הכוללת עשרה או יותר תווים אקראים, או שמונה או יותר מילים.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>הקש את הסיסמא הישנה והחדשה לארנק.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>זכור שהצפנת הארנק לא יכולה להגן עליך לגמרי מגניבת המטבעות שלך על ידי תוכנה זדונית שנמצאת על המחשב שלך.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>הארנק המיועד להצפנה</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>הארנק שלך עומד להיות מוצפן/</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>הארנק שלך מוצפן כעת/</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>חשוב! כל גיבוי קודם שעשית לארנק שלך יש להחליף עם קובץ הארנק המוצפן שזה עתה נוצר. מסיבות אבטחה, גיבויים קודמים של קובץ הארנק הלא-מוצפן יהפכו לחסרי שימוש ברגע שתתחיל להשתמש בארנק החדש המוצפן.</translation>
@@ -301,6 +326,14 @@
<source>Open &amp;URI...</source>
<translation>פתיחת &amp;כתובת משאב</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>צור ארנק...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>צור ארנק חדש</translation>
</message>
<message>
<source>Wallet:</source>
<translation>ארנק:</translation>
@@ -431,7 +464,7 @@
</message>
<message>
<source>Transactions after this will not yet be visible.</source>
<translation>ההעברות שבוצעו לאחר העברה זו לא יופיעו.</translation>
<translation>עסקאות שבוצעו לאחר העברה זו לא יופיעו.</translation>
</message>
<message>
<source>Error</source>
@@ -449,6 +482,14 @@
<source>Up to date</source>
<translation>עדכני</translation>
</message>
<message>
<source>Node window</source>
<translation>חלון צומת</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>פתיחת ניפוי באגים בצומת וגם מסוף בקרה לאבחון</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;כתובות למשלוח</translation>
@@ -457,6 +498,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;כתובות לקבלה</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>פתיחת ביטקוין: כתובת משאב</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>פתיחת ארנק</translation>
@@ -670,7 +715,7 @@
</message>
<message>
<source>Copy transaction ID</source>
<translation>העתקת מזהה ההעברה</translation>
<translation>העתקת מזהה העסקה</translation>
</message>
<message>
<source>Lock unspent</source>
@@ -739,10 +784,54 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Create wallet failed</source>
<translation>יצירת הארנק נכשלה</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>אזהרה לגבי יצירת הארנק</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>צור ארנק.</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>שם הארנק</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>הצפן את הארנק. הארנק יהיה מוצפן באמצעות סיסמא לבחירתך.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>הצפנת ארנק</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>נטרלו מפתחות פרטיים לארנק זה. ארנקים עם מפתחות פרטיים מנוטרלים יהיו מחוסרי מפתחות פרטיים וללא מקור HD או מפתחות מיובאים. זהו אידאלי לארנקי צפייה בלבד.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>השבתת מפתחות פרטיים</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>הכינו ארנק ריק. ארנקים ריקים הנם ללא מפתחות פרטיים ראשוניים או סקריפטים. מפתחות פרטיים או כתובות ניתנים לייבוא, או שניתן להגדיר מקור HD במועד מאוחר יותר. </translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation>צור ארנק ריק</translation>
</message>
<message>
<source>Create</source>
<translation>צור</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -852,7 +941,11 @@
</message>
<message>
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>בעת לחיצה על אישור, %1 יחל בהורדה ועיבוד מלאים של שרשרת המקטעים %4 (%2 ג״ב) החל מההעברות הראשונות ב־%3 עם ההשקה הראשונית של %4.</translation>
<translation>בעת לחיצה על אישור, %1 יחל בהורדה ועיבוד מלאים של שרשרת המקטעים %4 (%2 ג׳יגה-בייט) החל מההעברות הראשונות ב־%3 עם ההשקה הראשונית של %4.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>חזרה לאחור מהגדרות אלו מחייב הורדה מחדש של כל הבלוקצ'יין. מהיר יותר להוריד את השרשרת המלאה ולקטום אותה מאוחר יותר. הדבר מנטרל כמה תכונות מתקדמות.</translation>
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
@@ -874,6 +967,10 @@
<source>Bitcoin</source>
<translation>ביטקוין</translation>
</message>
<message>
<source>Discard blocks after verification, except most recent %1 GB (prune)</source>
<translation>התעלם בלוקים לאחר ווריפיקציה, למעט %1 ג׳יגה-בייט המאוחרים ביותר (המקוצצים)</translation>
</message>
<message>
<source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
<translation>מידע בנפח של לפחות %1 ג׳יגה-בייט יאוחסן בתיקייה זו, והוא יגדל עם הזמן.</translation>
@@ -900,13 +997,17 @@
</message>
<message numerus="yes">
<source>%n GB of free space available</source>
<translation><numerusform>ג״ב של מקום פנוי זמין</numerusform><numerusform>%n ג״ב של מקום פנוי זמינים</numerusform><numerusform>%n ג״ב של מקום פנוי זמינים</numerusform><numerusform>%n ג״ב של מקום פנוי זמינים</numerusform></translation>
<translation><numerusform>ג״ב של מקום פנוי זמין</numerusform><numerusform>%n ג״ב של מקום פנוי זמינים</numerusform><numerusform>%n ג״ב של מקום פנוי זמינים</numerusform><numerusform>%n ג׳יגה-בייט של מקום פנוי זמינים</numerusform></translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation><numerusform>(מתוך %n ג״ב נדרשים)</numerusform><numerusform>(מתוך %n ג״ב נדרשים)</numerusform><numerusform>(מתוך %n ג״ב נדרשים)</numerusform><numerusform>(מתוך %n ג״ב נדרשים)</numerusform></translation>
<translation><numerusform>(מתוך %n ג׳יגה-בייט נדרשים)</numerusform><numerusform>(מתוך %n ג׳יגה-בייט נדרשים)</numerusform><numerusform>(מתוך %n ג׳יגה-בייט נדרשים)</numerusform><numerusform>(מתוך %n ג׳יגה-בייט נדרשים)</numerusform></translation>
</message>
</context>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(ג׳יגה-בייט %n נדרש לשרשרת המלאה)</numerusform><numerusform>(%n ג׳יגה-בייט נדרשים לשרשרת המלאה)</numerusform><numerusform>(%n ג׳יגה-בייט נדרשים לשרשרת המלאה)</numerusform><numerusform>(%n ג׳יגה-בייט נדרשים לשרשרת המלאה)</numerusform></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -953,6 +1054,14 @@
<source>Hide</source>
<translation>הסתר</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 מסתנכנים כרגע. תתבצע הורדת כותרות ובלוקים מעמיתים תוך אימותם עד הגעה לראש שרשרת הבלוקים .</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>לא ידוע. סינכרון כותרות (%1, %2%)...</translation>
@@ -960,6 +1069,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>פתיחת כתובת משאב ביטקוין</translation>
</message>
<message>
<source>URI:</source>
<translation>כתובת משאב:</translation>
@@ -967,6 +1080,14 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>Open wallet failed</source>
<translation>פתיחת ארנק נכשלה</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>אזהרת פתיחת ארנק</translation>
</message>
<message>
<source>default wallet</source>
<translation>ארנק בררת מחדל</translation>
@@ -1004,7 +1125,7 @@
</message>
<message>
<source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
<translation>כתובת ה־IP של המתווך (לדוגמה IPv4: 127.0.0.1 / IPv6: ::1)</translation>
<translation>כתובת ה־IP של הפרוקסי (לדוגמה IPv4: 127.0.0.1 / IPv6: ::1)</translation>
</message>
<message>
<source>Shows if the supplied default SOCKS5 proxy is used to reach peers via this network type.</source>
@@ -1060,7 +1181,7 @@
</message>
<message>
<source>GB</source>
<translation>ג״ב</translation>
<translation>ג'יגה בייט</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain.</source>
@@ -1344,6 +1465,18 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'//:bitcoin' אינה כתובת URI תקינה. השתמשו במקום ב ':bitcoin'.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>אין אפשרות לעבד את בקשת התשלום כיון ש BIP70 אינו נתמך.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>עקב תקלות בטיחות רבות ב BIP70 מומלץ בחום להתעלם מההוראות של סוחר להחליף ארנקים </translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Iאם קיבלת הודעת שגיאה זו עליך לבקש מבעל העסק לספק URI תואם BIP21 URI.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>כתובת תשלום שגויה %1</translation>
@@ -1464,7 +1597,7 @@
</message>
<message>
<source>%1 GB</source>
<translation>%1 ג״ב</translation>
<translation>%1 ג'יגה בייט</translation>
</message>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
@@ -1505,6 +1638,10 @@
<source>Error encoding URI into QR Code.</source>
<translation>שגיאה בקידוד ה URI לברקוד.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>תמיכה בקוד QR לא זמינה.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>שמירת קוד QR</translation>
@@ -1644,10 +1781,22 @@
<source>Synced Blocks</source>
<translation>בלוקים מסונכרנים</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>המערכת האוטונומית הממופה משמשת לגיוון בחירת עמיתים.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>מופה בתור</translation>
</message>
<message>
<source>User Agent</source>
<translation>סוכן משתמש</translation>
</message>
<message>
<source>Node window</source>
<translation>חלון צומת</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>פתחו את לוג ניפוי השגיאות ה%1 מתיקיית הנתונים הנוכחית. עבור קבצי לוג גדולים ייתכן זמן המתנה של מספר שניות.</translation>
@@ -1798,7 +1947,7 @@
</message>
<message>
<source>(node id: %1)</source>
<translation>(node id: %1)</translation>
<translation>(מזהה צומת: %1)</translation>
</message>
<message>
<source>via %1</source>
@@ -1859,6 +2008,18 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>סכום כרשות לבקשה. ניתן להשאיר זאת ריק כדי לא לבקש סכום מסוים.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>תווית אופצינלית לצירוף לכתובת קבלה חדשה (לשימושך לזיהוי חשבונות). היא גם מצורפת לבקשת התשלום.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>הודעה אוצפציונלית מצורפת לבקשת התשלום אשר ניתן להציגה לשולח.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;יצירת כתובת קבלה חדשה</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>ניקוי של כל השדות בטופס.</translation>
@@ -2108,6 +2269,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Dust:</source>
<translation>אבק:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>הסתרת הגדרות עמלת עסקה</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>כאשר יש פחות נפח עסקאות מאשר מקום בבלוק, כורים וכן צמתות מקשרות יכולות להכתיב עמלות מינימום. התשלום של עמלת מינימום הנו תקין, אך יש לקחת בחשבון שהדבר יכול לגרום לעסקה שלא תאושר ברגע שיש יותר ביקוש לעסקאות ביטקוין מאשר הרשת יכולה לעבד.</translation>
@@ -2176,14 +2341,38 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 בלוקים)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>יצ&amp;ירת לא חתום</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>יוצר עסקת ביטקוין חתומה חלקית (PSBT) לשימוש עם ארנק %1 לא מחובר למשל, או עם PSBT ארנק חומרה תואם.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>מתוך ארנק '%1'</translation>
</message>
<message>
<source>%1 to '%2'</source>
<translation>%1 אל '%2'</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 ל %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>האם ברצונך לשמור עסקה זו כטיוטה?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>לשלוח?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>נא לסקור את העיסקה המוצעת. הדבר יצור עיסקת ביטקוין חתומה חלקית (PSBT) אותה ניתן להעתיק ואז לחתום עם למשל ארנק לא מקוון %1, או עם ארנק חומרה תואם-PSBT.</translation>
</message>
<message>
<source>or</source>
<translation>או</translation>
@@ -2208,10 +2397,34 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Total Amount</source>
<translation>סכום כולל</translation>
</message>
<message>
<source>To review recipient list click "Show Details..."</source>
<translation>כדי לסקור את רשימת המקבלים יש להקיש "הצגת פרטים..."</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>אימות שליחת מטבעות</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>אישור הצעת עיסקה</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>העתקת PSBT אל לוח הגזירים</translation>
</message>
<message>
<source>Send</source>
<translation>שלח</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT הועתקה</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>יתרת צפייה-בלבד</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>כתובת הנמען שגויה. נא לבדוק שוב.</translation>
@@ -2307,6 +2520,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Remove this entry</source>
<translation>הסרת רשומה זו</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>הסכום לשליחה במטבע הנבחר</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>העמלה תנוכה מהסכום שנשלח. הנמען יקבל פחות ביטקוינים ממה שהזנת בשדה הסכום. אם נבחרו מספר נמענים, העמלה תחולק באופן שווה.</translation>
@@ -2433,6 +2650,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>The Bitcoin address the message was signed with</source>
<translation>כתובת הביטקוין שאתה נחתמה ההודעה</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>ההודעה החתומה לאימות</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>החתימה שניתנת כאשר ההודעה נחתמה</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>ניתן לאמת את ההודעה כדי להבטיח שהיא נחתמה עם כתובת הביטקוין הנתונה</translation>
@@ -2465,6 +2690,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Wallet unlock was cancelled.</source>
<translation>שחרור הארנק בוטל.</translation>
</message>
<message>
<source>No error</source>
<translation>אין שגיאה</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>המפתח הפרטי לכתובת שהוכנסה אינו זמין.</translation>
@@ -2639,13 +2868,17 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Output index</source>
<translation>מפתח פלט</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation>(האישור לא אומת)</translation>
</message>
<message>
<source>Merchant</source>
<translation>סוחר</translation>
</message>
<message>
<source>Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours.</source>
<translation>מטבעות מופקים חייבים להבשיל במשך %1 בלוקים לפני שניתן לבזבזם. כשהפקתם בלוק זה, הבלוק שודר לרשת לצורך הוספה לבלוקצ'יין. אם הבלוק לא יתווסף לבלוקצ'יין, מצב הבלוק ישונה ל "לא התקבל" ולא יהיה ניתן לבזבזו. מצב זה עלול לקרות כאשר שרת ביטקוין אחר מפיק בלוק בהפרש של כמה שניות משלכם.</translation>
<translation>מטבעות מופקים חייבים להבשיל במשך %1 בלוקים לפני שניתן לבזבזם. כשהפקתם בלוק זה, הבלוק שודר לרשת לצורך הוספה לבלוקצ'יין. אם הבלוק לא יתווסף לבלוקצ'יין, מצב הבלוק ישונה ל"לא התקבל" ולא יהיה ניתן לבזבזו. מצב זה עלול לקרות כאשר צומת אחרת מפיקה בלוק בהפרש של כמה שניות משלכם.</translation>
</message>
<message>
<source>Debug information</source>
@@ -2962,6 +3195,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Close wallet</source>
<translation>סגירת ארנק</translation>
</message>
<message>
<source>Are you sure you wish to close the wallet &lt;i&gt;%1&lt;/i&gt;?</source>
<translation>האם את/ה בטוח/ה שברצונך לסגור את הארנק &lt;i&gt;%1&lt;/i&gt;?</translation>
</message>
<message>
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>סגירת הארנק למשך זמן רב מדי יכול לגרור את הצורך לסינכרון מחדש של כל השרשרת אם אופצית הגיזום אקטיבית.</translation>
@@ -2990,7 +3227,11 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
</message>
<message>
<source>Do you want to increase the fee?</source>
<translation>להגדיל את העמלה?</translation>
<translation>האם ברצונך להגדיל את העמלה?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>האם ברצונך להכין עסיקה עם עמלה מוגברת?</translation>
</message>
<message>
<source>Current fee:</source>
@@ -3008,6 +3249,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Confirm fee bump</source>
<translation>אישור הקפצת עמלה</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>לא ניתן לשמור את העסקה כטיוטה.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT הועתקה</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>אי אפשר לחתום על ההעברה.</translation>
@@ -3174,6 +3423,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Corrupted block database detected</source>
<translation>התגלה מסד נתוני מקטעים לא תקין</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation> קובץ asmap %s לא נמצא</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation> קובץ asmap %s לא נפרס</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>האם לבנות מחדש את מסד נתוני המקטעים?</translation>
@@ -3230,6 +3487,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation>איתחול של תהליך בדיקות השפיות נכשל. %s בתהליך סגירה.</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation>הרשאת P2P שגויה: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation>סכום שגוי עבור -%s=&lt;amount&gt;: '%s'</translation>
@@ -3246,6 +3507,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Specified blocks directory "%s" does not exist.</source>
<translation>התיקיה שהוגדרה "%s" לא קיימת.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>כתובת לא ידועה מסוג "%s"</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>סוג שינוי לא ידוע: "%s"</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>שדרוג מאגר נתוני txindex </translation>
@@ -3367,6 +3636,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>עליך לציין פתחה עם -whitebind: '%s'</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>מצב מצומצם לא ניתן לשימוש עם blockfilterindex</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation>הורדת -maxconnections מ %d ל %d, עקב מגבלות מערכת.</translation>
@@ -3425,6 +3698,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Unable to generate initial keys</source>
<translation>לא מצליח ליצור מפתחות ראשוניים</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>ערך -blockfilterindex %s לא ידוע.</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>מאמת ארנק(ים)...</translation>

File diff suppressed because it is too large Load Diff

View File

@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Ažurno</translation>
</message>
<message>
<source>Node window</source>
<translation>Konzola za čvor</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Otvori konzolu za dijagnostiku i otklanjanje pogrešaka čvora.</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>Adrese za &amp;slanje</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>Adrese za &amp;primanje</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Otvori bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Otvorite novčanik</translation>
@@ -1059,6 +1071,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Otvori bitcoin: URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1451,6 +1467,10 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' nije ispravan URI. Koristite 'bitcoin:' umjesto toga.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Zahtjev za plaćanje nije izvršen jer BIP70 nije podržan</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Zbog rasprostranjenih sigurnosnih mana u BIP70-u, strogo se preporučuje da se ignoriraju bilo kakve naredbe o zamjeni novčanika sa strane trgovca.</translation>
@@ -1763,10 +1783,18 @@
<source>Synced Blocks</source>
<translation>Broj sinkronizranih blokova</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapirano kao</translation>
</message>
<message>
<source>User Agent</source>
<translation>Korisnički agent</translation>
</message>
<message>
<source>Node window</source>
<translation>Konzola za čvor</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Otvorite datoteku zapisa programa %1 iz trenutne podatkovne mape. Može potrajati nekoliko sekundi za velike datoteke zapisa.</translation>
@@ -1978,6 +2006,10 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Opcionalan iznos koji možete zahtijevati. Ostavite ovo prazno ili unesite nulu ako ne želite zahtijevati specifičan iznos.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Opcionalna poruka je priložena zahtjevu za plaćanje i može se prikazati pošiljatelju.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Stvorite novu primateljsku adresu</translation>
@@ -2231,6 +2263,10 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>Dust:</source>
<translation>Prah:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Sakrijte postavke za transakcijske provizije</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Kada je kapacitet transakcija manja od prostora u blokovima, rudari i čvorovi prenositelji mogu zatražiti minimalnu naknadu. Prihvatljivo je platiti samo ovu minimalnu naknadu, ali budite svjesni da ovime može nastati transakcija koja se nikad ne potvrđuje čim je potražnja za korištenjem Bitcoina veća nego što mreža može obraditi.</translation>
@@ -2299,6 +2335,10 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 blokova)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Cr&amp;eate nije potpisan</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>iz novčanika '%1'</translation>
@@ -2311,6 +2351,10 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>%1 to %2</source>
<translation>%1 na %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Želite li kreirati nacrt transakcije?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Jeste li sigurni da želite poslati transakciju?</translation>
@@ -2347,10 +2391,26 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>Confirm send coins</source>
<translation>Potvrdi slanje novca</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Potvrdi predloženu transakciju </translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Kopiraj PSBT u međuspremnik</translation>
</message>
<message>
<source>Send</source>
<translation>Pošalji</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT kopiran</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Saldo samo za gledanje:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Adresa primatelja je nevažeća. Provjerite ponovno, molim vas.</translation>
@@ -2446,6 +2506,10 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>Remove this entry</source>
<translation>Obrišite ovaj zapis</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>Iznos za slanje u odabranoj valuti </translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Naknada će biti oduzeta od poslanog iznosa. Primatelj će primiti manji iznos od onoga koji unesete u polje iznosa. Ako je odabrano više primatelja, onda će naknada biti podjednako raspodijeljena.</translation>
@@ -2572,6 +2636,14 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>The Bitcoin address the message was signed with</source>
<translation>Bitcoin adresa kojom je poruka potpisana</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Potpisana poruka za provjeriti</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>Potpis predan kad je poruka bila potpisana</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Provjerite poruku da budete sigurni da je potpisana zadanom Bitcoin adresom</translation>
@@ -3159,6 +3231,14 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>Confirm fee bump</source>
<translation>Potvrdite povećanje naknade</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Nije moguće pripremiti nacrt transakcije</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT kopiran</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Transakcija ne može biti potpisana.</translation>
@@ -3325,6 +3405,14 @@ Napomena: Budući da se naknada računa po bajtu, naknada od "100 satošija po k
<source>Corrupted block database detected</source>
<translation>Pokvarena baza blokova otkrivena</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>Nije pronađena asmap datoteka %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>Nije moguće pročitati asmap datoteku %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Želite li sada obnoviti bazu blokova?</translation>

View File

@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>A cím vagy címke szerkeszteséhez kattintson a jobb gombbal</translation>
<translation>A cím vagy címke szerkesztéséhez kattints a jobb gombbal</translation>
</message>
<message>
<source>Create a new address</source>
@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Naprakész</translation>
</message>
<message>
<source>Node window</source>
<translation>Csomópont ablak</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Nyisd meg a hibaellenőrző és diagnosztizáló konzolt.</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Küldő címek</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;Fogadó címek</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Bitcoin URI megnyitása</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Tárca megnyitása</translation>
@@ -549,6 +561,10 @@
<source>Error: %1</source>
<translation>Hiba: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>Vigyázz: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -805,6 +821,10 @@
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>A tárcához tartozó privát kulcsok letiltása. Azok a tárcák, melyeknél a privát kulcsok le vannak tiltva, nem tartalmaznak privát kulcsokat és nem tartalmazhatnak HD magot vagy importált privát kulcsokat. Ez azoknál a tárcáknál ideális, melyeket csak megfigyelésre használnak.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Kapcsold ki a Privát Kódot</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>Üres tárca készítése. Az üres tárcák kezdetben nem tartalmaznak privát kulcsokat vagy szkripteket. Később lehetséges a privát kulcsok vagy címek importálása avagy egy HD mag beállítása.</translation>
@@ -813,7 +833,11 @@
<source>Make Blank Wallet</source>
<translation>Üres tárca készítése</translation>
</message>
</context>
<message>
<source>Create</source>
<translation>Létrehozás</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -852,6 +876,14 @@
<source>The entered address "%1" is not a valid Bitcoin address.</source>
<translation>A megadott "%1" cím nem egy érvényes Bitcoin-cím.</translation>
</message>
<message>
<source>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</source>
<translation>A(z) "%1" már egy létező fogadó cím "%2" névvel és nem lehet küldő címként hozzáadni.</translation>
</message>
<message>
<source>The entered address "%1" is already in the address book with label "%2".</source>
<translation>A megadott "%1" cím már szerepel a címjegyzékben "%2" néven.</translation>
</message>
<message>
<source>Could not unlock wallet.</source>
<translation>Nem sikerült a tárca megnyitása</translation>
@@ -973,7 +1005,15 @@
<source>%n GB of free space available</source>
<translation><numerusform>%n GB elérhető szabad hely</numerusform><numerusform>%n GB elérhető szabad hely</numerusform></translation>
</message>
</context>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation><numerusform>(a szükséges %n GB-ból)</numerusform><numerusform>(a szükséges %n GB-ból)</numerusform></translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(%n GB szükséges a teljes sorozathoz)</numerusform><numerusform>(%n GB szükséges a teljes lánchoz)</numerusform></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -1020,9 +1060,25 @@
<source>Hide</source>
<translation>Elrejtés</translation>
</message>
</context>
<message>
<source>Esc</source>
<translation>Kilépés</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 szinkronizálás alatt. Fejléceket és blokkokat tölt le a felektől, majd érvényesíti, amíg el nem éri a blokklánc tetejét.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Ismeretlen. Fejlécek szinkronizálása (%1, %2%)...</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Nyisd meg a bitcoin címedet</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1265,6 +1321,10 @@
<source>&amp;Third party transaction URLs</source>
<translation>&amp;Harmadik féltől származó tranzakció URL-ek</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line or in the configuration file:</source>
<translation>Az ebben a párbeszédablakban beállított opciók felülírásra kerültek a parancssor által vagy a konfigurációs fájlban:</translation>
</message>
<message>
<source>&amp;OK</source>
<translation>&amp;OK</translation>
@@ -1407,10 +1467,22 @@
<source>URI handling</source>
<translation>URI kezelés</translation>
</message>
<message>
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' nem érvényes egységes erőforrás azonosító (URI). Használd helyette a 'bitcoin'-t.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>A fizetési kérelmet nem lehet feldolgozni, mert a BIP70 nem támogatott.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>A BIP70 széleskörű biztonsági hiányosságai következtében határozottan ajánljuk, hogy hagyjon figyelmen kívül bármiféle kereskedelmi utasítást, amely a tárca váltására készteti.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Ha ezt a hibaüzenetet kapod, meg kell kérned a kereskedőt, hogy biztosítson BIP21 kompatibilis URI-t.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>Érvénytelen fizetési cím %1</translation>
@@ -1572,6 +1644,10 @@
<source>Error encoding URI into QR Code.</source>
<translation>Hiba lépett fel az URI QR kóddá alakításakor.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>QR kód támogatás nem elérhető.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>QR Kód Mentése</translation>
@@ -1607,6 +1683,18 @@
<source>Datadir</source>
<translation>Adatkönyvtár</translation>
</message>
<message>
<source>To specify a non-default location of the data directory use the '%1' option.</source>
<translation>A nem alapértelmezett elérési út használatához használd a '%1' opciót</translation>
</message>
<message>
<source>Blocksdir</source>
<translation>Blokk könyvtár</translation>
</message>
<message>
<source>To specify a non-default location of the blocks directory use the '%1' option.</source>
<translation>Az blokkk könyvárhoz kívánt nem alapértelmezett elérési úthoz használd a '%1' opciót</translation>
</message>
<message>
<source>Startup time</source>
<translation>Bekapcsolás ideje</translation>
@@ -1647,6 +1735,10 @@
<source>Wallet: </source>
<translation>Tárca:</translation>
</message>
<message>
<source>(none)</source>
<translation>(nincs)</translation>
</message>
<message>
<source>&amp;Reset</source>
<translation>&amp;Visszaállítás</translation>
@@ -1695,10 +1787,22 @@
<source>Synced Blocks</source>
<translation>Szinkronizált Blokkok</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>A megadott "Önálló rendszer" használom a peer választás diverzifikálásához.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Felvett AS (önálló rendszer)</translation>
</message>
<message>
<source>User Agent</source>
<translation>User Agent</translation>
</message>
<message>
<source>Node window</source>
<translation>Csomópont ablak</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>A %1 debug log fájl megnyitása a jelenlegi könyvtárból. Ez néhány másodpercig eltarthat nagyobb log fájlok esetén.</translation>
@@ -1910,6 +2014,14 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Egy opcionálisan kérhető összeg. Hagyja üresen, vagy írjon be nullát, ha nem kívánja használni.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Egy opcionális címke, amit hozzá lehet rendelni az új fogadó címhez (amit használhatsz a számla azonosításához). E mellett hozzá lesz csatolva a fizetési kérelemhez is.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Egy opcionális üzenet ami a fizetési kérelemhez van fűzve és valószínűleg meg lesz jelenítve a fizető oldalán.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Új fogadócím létrehozása</translation>
@@ -2119,6 +2231,14 @@
<source>Warning: Fee estimation is currently not possible.</source>
<translation>Figyelem: A hozzávetőleges díjszámítás jelenleg nem lehetséges.</translation>
</message>
<message>
<source>Specify a custom fee per kB (1,000 bytes) of the transaction's virtual size.
Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis per kB" for a transaction size of 500 bytes (half of 1 kB) would ultimately yield a fee of only 50 satoshis.</source>
<translation>Add meg a választott tranzakciós díjat kB (1000 bájt) -onként a tranzakció virtuális méretére számolva.
Figyelem: Mivel bájtonként lesz a dj kiszámolva ezért a "100 satoshi per kB" egy 500 bájtos (fél kB) tranzakciónál ténylegesen 50 satoshi lesz.</translation>
</message>
<message>
<source>per kilobyte</source>
<translation>kilobájtonként</translation>
@@ -2155,6 +2275,18 @@
<source>Dust:</source>
<translation>Por-határ:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Rejtsd el a tranzakciós költségek beállításait</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Ha kevesebb a tranzakció mint amennyi hely lenne egy blokkban, akkor a bányászok és a többi node megkövetelheti a minimum díjat. E minimum díjat fizetni elegendő lehet, de tudnod kell, hogy ez esetleg soha nem konfirmálódó tranzakciót eredményezhet ahogy a tranzakciók száma magasabb lesz mint a network által megengedett.</translation>
</message>
<message>
<source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
<translation>A túl alacsony illeték a tranzakció soha be nem teljesülését eredményezheti (olvassa el az elemleírást)</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation>Várható megerősítési idő:</translation>
@@ -2163,6 +2295,10 @@
<source>Enable Replace-By-Fee</source>
<translation>Replace-By-Fee bekapcsolása</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>A With Replace-By-Fee (BIP-125) funkciót használva küldés után is megemelheted a tranzakciós díjat. Ha ezt nem használod akkor magasabb díjat érdemes használni, hogy kisebb legyen a késedelem.</translation>
</message>
<message>
<source>Clear &amp;All</source>
<translation>Mindent &amp;töröl</translation>
@@ -2211,18 +2347,38 @@
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 blokov)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>&amp;Aláírás nélkül létrehozása Unsigned</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Létrehoz egy Részlegesen Aláírt Bitcoin Tranzakciót (PSBT) melyet offline %1 tárcával vagy egy PSBT kompatibilis hardver tárcával használhatsz.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>A "%1" tárcától</translation>
</message>
<message>
<source>%1 to '%2'</source>
<translation>%1 -től '%2-ig'</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 do %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Piszkozatba teszed ezt a tranzakciót?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Biztosan el akarja küldeni?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Figyelmesen nézd át a tranzakció adatait! Ez alapján fog létrejönni a részlegesen aláírt Bitcoin tranzakció (PSBT) kulcsa, amellyel hitelesíthető pl. egy offline %1 tárca, vagy egy PSBT kompatibilis hardware tárca.</translation>
</message>
<message>
<source>or</source>
<translation>vagy</translation>
@@ -2231,14 +2387,50 @@
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Később növelheti a tranzakció díját (lásd Replace-By-Fee, BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Kérjük, hogy ellenőrizze le a tranzakcióját.</translation>
</message>
<message>
<source>Transaction fee</source>
<translation>Tranzakciós díj</translation>
</message>
<message>
<source>Not signalling Replace-By-Fee, BIP-125.</source>
<translation>Nem jelzek Replace-By-Fee, BIP-125-t</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Teljes összeg</translation>
</message>
<message>
<source>To review recipient list click "Show Details..."</source>
<translation>A címzett lista ellenőrzéséhez kattintson a "További részletek" gombra.</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Összeg küldésének megerősítése</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Tranzakció javaslat megerősítése</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Másold át a részlegesen aláírt Bitcoin tranzakció (PSBT) kulcsait a vágólapra!</translation>
</message>
<message>
<source>Send</source>
<translation>Küldés</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT másolva</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Egyenleg csak megfigyelésre</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>A fogadó címe érvénytelen. Kérem ellenőrizze.</translation>
@@ -2271,6 +2463,10 @@
<source>Payment request expired.</source>
<translation>A fizetési kérelem lejárt.</translation>
</message>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation><numerusform>A tranzakció megerősítése %n blokk múlva várható.</numerusform><numerusform>A tranzakció megerősítése %n blokk múlva várható.</numerusform></translation>
</message>
<message>
<source>Warning: Invalid Bitcoin address</source>
<translation>Figyelmeztetés: Érvénytelen Bitcoin cím</translation>
@@ -2330,6 +2526,10 @@
<source>Remove this entry</source>
<translation>Ez a bejegyzés eltávolítása</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>A küldendő összeg a választott egységben.</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Znesek plačila bo zmanjšan za znesek provizije. Prejemnik bo prejel manjše število kovancev, kot je bil vnešeni znesek. Če je prejemnikov več, bo provizija med njih enakomerno porazdeljena.</translation>
@@ -2456,6 +2656,14 @@
<source>The Bitcoin address the message was signed with</source>
<translation>Bitcoin cím, amivel aláírta az üzenetet</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Az aláírt üzenet ellenőrzésre</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>A kapott aláírás amikor az üzenet alá lett írva.</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Ellenőrizze az üzenetet, hogy valóban a megjelölt Bitcoin címmel van-e aláírva</translation>
@@ -2488,6 +2696,10 @@
<source>Wallet unlock was cancelled.</source>
<translation>Tárca megnyitása megszakítva</translation>
</message>
<message>
<source>No error</source>
<translation>Nincs hiba</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>A megadott cím privát kulcsa nem található.</translation>
@@ -2530,6 +2742,10 @@
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
<source>Open for %n more block(s)</source>
<translation><numerusform>még %n blokkig nyitva</numerusform><numerusform>még %n blokkig nyitva</numerusform></translation>
</message>
<message>
<source>Open until %1</source>
<translation>%1 -ig megnyitva</translation>
@@ -2606,6 +2822,10 @@
<source>Credit</source>
<translation>Jóváírás</translation>
</message>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation><numerusform>még %n blokkig nyitva</numerusform><numerusform>még %n blokkig nyitva</numerusform></translation>
</message>
<message>
<source>not accepted</source>
<translation>elutasítva</translation>
@@ -2646,10 +2866,18 @@
<source>Transaction total size</source>
<translation>Tranzakció teljes mérete</translation>
</message>
<message>
<source>Transaction virtual size</source>
<translation>A tranzakció virtuális mérete</translation>
</message>
<message>
<source>Output index</source>
<translation>Indeks izhoda</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation>(A tanúsítvány nem ellenőrzött)</translation>
</message>
<message>
<source>Merchant</source>
<translation>Kereskedő</translation>
@@ -2708,6 +2936,10 @@
<source>Label</source>
<translation>Címke</translation>
</message>
<message numerus="yes">
<source>Open for %n more block(s)</source>
<translation><numerusform>még %n blokkig nyitva</numerusform><numerusform>még %n blokkig nyitva</numerusform></translation>
</message>
<message>
<source>Open until %1</source>
<translation>%1 -ig megnyitva</translation>
@@ -2991,6 +3223,10 @@
<source>Send Coins</source>
<translation>Érmék Küldése</translation>
</message>
<message>
<source>Fee bump error</source>
<translation>Díj emelési hiba</translation>
</message>
<message>
<source>Increasing transaction fee failed</source>
<translation>Tranzakciós díj növelése sikertelen</translation>
@@ -2999,6 +3235,10 @@
<source>Do you want to increase the fee?</source>
<translation>Kívánja megnövelni a díjat?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Akarod egy piszkozat tranzakciót díj emeléssel?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>Jelenlegi díj:</translation>
@@ -3011,6 +3251,18 @@
<source>New fee:</source>
<translation>Új díj:</translation>
</message>
<message>
<source>Confirm fee bump</source>
<translation>Erősitsd meg a díj emelését</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Sikertelen tranzakciós piszkozat</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT másolva</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Tranzakció aláírása sikertelen.</translation>
@@ -3058,7 +3310,11 @@
<source>The wallet data was successfully saved to %1.</source>
<translation>A tárca adatai sikeresen elmentve %1.</translation>
</message>
</context>
<message>
<source>Cancel</source>
<translation>Bezárás</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
@@ -3089,18 +3345,42 @@
<source>The %s developers</source>
<translation>A %s fejlesztők</translation>
</message>
<message>
<source>Can't generate a change-address key. No keys in the internal keypool and can't generate any keys.</source>
<translation>Nem generálható új cím! Jelenleg nincsenek ehhez rendelkezésre álló kulcsok.</translation>
</message>
<message>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>Az %s adatkönyvtár nem zárható. A %s valószínűleg fut már.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>Nem lehetséges a megadott kapcsolatok és az addrman által felderített kapcsolatok egyidejű használata.</translation>
</message>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Hiba %s beolvasása közben. Az összes kulcs sikeresen beolvasva, de a tranzakciós adatok és a címtár rekordok hiányoznak vagy sérültek.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Opozorilo: Preverite, če sta datum in ura na vašem računalniku točna! %s ne bo deloval pravilno, če je nastavljeni čas nepravilen.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>Kérlek támogasd ha hasznásnak találtad a %s-t. Az alábbi linken találsz bővebb információt a szoftverről %s.</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation>A blokk adatbázis tartalmaz egy blokkot ami a jövőből érkezettnek látszik. Ennek oka lehet, hogy a számítógéped dátum és idő beállítása helytelen. Csak akkor építsd újra a block adatbázist ha biztos vagy benne, hogy az időbeállítás helyes.</translation>
</message>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation>Ez egy kiadás előtt álló, teszt verzió - csak saját felelősségre - ne használja bányászatra vagy kereskedéshez.</translation>
</message>
<message>
<source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
<translation>Ezt a tranzakciós díjat figyelmen kívül hagyhatod ha a visszajáró kisebb mint a "porhintés" összege jelenleg.</translation>
</message>
<message>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
<translation>Ne morem ponoviti blokov. Podatkovno bazo bo potrebno ponovno zgraditi z uporabo ukaza -reindex-chainstate.</translation>
@@ -3137,6 +3417,10 @@
<source>Change index out of range</source>
<translation>Indeks drobiža izven dovoljenega območja</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation>A konfigurációs beálltás %s kizárólag az %s hálózatra vonatkozik amikor a [%s] szekcióban van.</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation>Szerzői jog (C) fenntartva %i-%i</translation>
@@ -3145,6 +3429,14 @@
<source>Corrupted block database detected</source>
<translation>Sérült blokk-adatbázis észlelve</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>%s asmap fájl nem található</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>%s beolvasása sikertelen</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Újra akarod építeni a blokk adatbázist most?</translation>
@@ -3161,6 +3453,10 @@
<source>Error loading %s</source>
<translation>Hiba a(z) %s betöltése közben</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation> %s betöltése sikertelen. A privát kulcsok csak a létrehozáskor tilthatóak le.</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation>Hiba a(z) %s betöltése közben: A tárca hibás.</translation>
@@ -3193,6 +3489,14 @@
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation>Helytelen vagy nemlétező genézis blokk. Helytelen hálózati adatkönyvtár?</translation>
</message>
<message>
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation>%s bezárása folyamatban. A kezdeti hibátlansági teszt sikertelen.</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation>Érvénytelen P2P jog: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation>Neveljavna količina za -%s=&lt;amount&gt;: '%s'</translation>
@@ -3205,10 +3509,30 @@
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>Neveljavna količina za -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>A megadott blokk "%s" nem létezik.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>Ismeretlen cím típus '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Visszajáró típusa ismeretlen '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>txindex adatbázis frissítése</translation>
</message>
<message>
<source>Loading P2P addresses...</source>
<translation>P2P címek betöltése...</translation>
</message>
<message>
<source>Error: Disk space is too low!</source>
<translation>Hiba: A lemezen kevés hely elérhető!</translation>
</message>
<message>
<source>Loading banlist...</source>
<translation>Tiltólista betöltése...</translation>
@@ -3245,10 +3569,22 @@
<source>Unable to bind to %s on this computer. %s is probably already running.</source>
<translation>Na tem računalniku ni bilo mogoče vezati naslova %s. %s je verjetno že zagnan.</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation>Kulcs generálás sikertelen</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation>Nem támogatott logolási kategória %s=%s</translation>
</message>
<message>
<source>Upgrading UTXO database</source>
<translation>Blokk adatbázis frissítése</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation>Az ügyfélügynök megjegyzésben nem biztonságos karakter van: (%s) </translation>
</message>
<message>
<source>Verifying blocks...</source>
<translation>Blokkok ellenőrzése...</translation>
@@ -3261,6 +3597,14 @@
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Napaka: Ni mogoče sprejemati dohodnih povezav (vrnjena napaka: %s)</translation>
</message>
<message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Érvénytelen összeg -maxtxfee=&lt;amount&gt;: '%s' (legalább a minrelay összeg azaz %s kell legyen, hogy ne ragadjon be a tranzakció)</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>A tranzakció összege túl alacsony az elküldéshez miután a díj levonódik</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>Újra kell építeni az adatbázist a -reindex használatával, ami a nyesett üzemmódot megszünteti. Ez a teljes blokklánc ismételt letöltésével jár.</translation>
@@ -3273,6 +3617,22 @@
<source>Error upgrading chainstate database</source>
<translation>Hiba a blokk adatbázis betöltése közben</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Érvénytelen -onion cím vagy hostname: '%s'</translation>
</message>
<message>
<source>Invalid -proxy address or hostname: '%s'</source>
<translation>Érvénytelen -proxy cím vagy hostname: '%s'</translation>
</message>
<message>
<source>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</source>
<translation>Érvénytelen tranzakciós díj -paytxfee=&lt;amount&gt;: '%s' (minimum ennyinek kell legyen %s)</translation>
</message>
<message>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation>Érvénytelen hálózati maszk van megadva itt: -whitelist: '%s'</translation>
</message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>Pri opciji -whitebind morate navesti vrata: %s</translation>
@@ -3285,6 +3645,10 @@
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation>Zmanjšujem maksimalno število povezav (-maxconnections) iz %d na %d, zaradi sistemskih omejitev.</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation>Ismeretlen szekció [%s]</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation>Tranzakció aláírása sikertelen</translation>
@@ -3301,6 +3665,15 @@
<source>Specified -walletdir "%s" is not a directory</source>
<translation>A megadott "%s" -walletdir nem könyvtár</translation>
</message>
<message>
<source>The specified config file %s does not exist
</source>
<translation>A megadott konfigurációs fájl %s nem található.</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation>A tranzakció összege túl alacsony a tranzakciós költség kifizetéséhez.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation>Ez egy kísérleti szoftver.</translation>
@@ -3317,10 +3690,18 @@
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation>Na tem računalniku ni bilo mogoče vezati naslova %s (vrnjena napaka: %s)</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation>PID fájl létrehozása sikertelen '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation>Ne zmorem ustvariti začetnih ključev</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>Ismeretlen -blockfilterindex érték %s.</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>Tárcák ellenőrzése...</translation>
@@ -3333,6 +3714,18 @@
<source>Zapping all transactions from wallet...</source>
<translation>A tárca összes trancakciójának törlése...</translation>
</message>
<message>
<source>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
<translation>-maxtxfee túl magasra van állítva! Ez a jelentős díj esetleg már egy egyszeri tranzakcióra is ki lehet fizetve.</translation>
</message>
<message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation>Ezt a tranzakciós díjat fogod fizetni ha a díjbecslés nem lehetséges.</translation>
</message>
<message>
<source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
<translation>A hálózati verzió string (%i) hossza túllépi a megengedettet (%i). Csökkentsd a hosszt vagy a darabszámot uacomments beállításban.</translation>
</message>
<message>
<source>Warning: Wallet file corrupt, data salvaged! Original %s saved as %s in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
<translation>Figyelem: A tárca-fájl megsérült, de az adatokat sikerült megmenteni! Az eredeti %s fájlt mentettük %s név alatt a %s könyvtárban. Amennyiben az egyenleg vagy a trancakciók helytelenek, állítsa vissza tárcáját a biztonsági mentés használatával.</translation>
@@ -3365,6 +3758,10 @@
<source>Transaction amounts must not be negative</source>
<translation>Tranzakció összege nem lehet negatív</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation>A tranzakcóihoz tartozó mempool elődlánc túl hosszú</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation>Legalább egy címzett kell a tranzakcióhoz</translation>
@@ -3381,10 +3778,18 @@
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use -upgradewallet=169900 or -upgradewallet with no version specified.</source>
<translation>A nem HD-s megosztott tárcát nem lehet bővíteni anélkül, hogy először a megosztás előtti kulcskészlet támogatására bővít. Használja az -upgradewallet=169900 parancsot vagy az -upgradewallet parancsot verzió megadása nélkül.</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation>Díjbecslés sikertelen. Alapértelmezett díj le van tiltva. Fárj néhány blokkot vagy engedélyezd a -fallbackfee -t.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>Figyelem: Privát kulcsokat észleltünk a {%s} tárcában, melynél a privát kulcsok le vannak tiltva.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>Nem tudok írni a '%s' könyvtárba, ellenőrizd a jogosultságokat.</translation>
</message>
<message>
<source>Loading block index...</source>
<translation>Blokkindex betöltése...</translation>

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More