Compare commits

...

190 Commits

Author SHA1 Message Date
fanquake
af591f2068 Merge bitcoin/bitcoin#22858: [0.21] Final changes for 0.21.2
6c102a696e release: bump RC to 0 (-final) (fanquake)
f78570ef87 doc: mention bech32m/BIP350 in doc/descriptors.md (Pieter Wuille)

Pull request description:

  Backports:
  * #22837 - doc: mention bech32m/BIP350 in doc/descriptors.md

ACKs for top commit:
  laanwj:
    ACK 6c102a696e
  glozow:
    ACK 6c102a696e looks correct to me
  jnewbery:
    ACK 6c102a696e

Tree-SHA512: 8cdfee955e1abdbc6900df3d01982cb77ec57ef008b75487ac9a63d571cc21e4ae0f107849aa575d239a8662619553778955ffbebf57201de5afcd34298d57b4
2021-09-23 18:07:49 +08:00
fanquake
6c102a696e release: bump RC to 0 (-final) 2021-09-23 15:07:14 +08:00
Pieter Wuille
f78570ef87 doc: mention bech32m/BIP350 in doc/descriptors.md
Github-Pull: #22837
Rebased-From: d2a09c8355
2021-09-23 14:50:29 +08:00
fanquake
97d3500601 Merge bitcoin/bitcoin#22823: [0.21] Update version and release notes for 0.21.2rc2
b8f5fb7c6b build: bump version to 0.21.2rc2 (fanquake)
82c5208ddc doc: update release notes for rc2 (fanquake)

Pull request description:

  Bump version to `0.21.2rc2` and add the new backports to the release notes.

ACKs for top commit:
  MarcoFalke:
    ACK b8f5fb7c6b
  hebasto:
    ACK b8f5fb7c6b

Tree-SHA512: 7bcdf6c42ac75fb24df8d6b60bddcac5f14363a3f7dd89a239f798bb14b5c911c2d7535a0372c2998719d33a561d0d28b0b6764aaf1f2ec330d4035ce965997b
2021-08-28 16:25:43 +08:00
fanquake
b8f5fb7c6b build: bump version to 0.21.2rc2 2021-08-28 16:01:20 +08:00
fanquake
82c5208ddc doc: update release notes for rc2 2021-08-28 15:55:03 +08:00
fanquake
6ebb9d0e46 Merge bitcoin/bitcoin#22808: [0.21] 0.21.2rc2 backports
d9b18c1290 Fix build with Boost 1.77.0 (Rafael Sadowski)
2d7f2606c1 ci: Run fuzzer task for the master branch only (Hennadii Stepanov)

Pull request description:

  Backported:

  1) #22730
  1) #22713

ACKs for top commit:
  fanquake:
    ACK d9b18c1290 - Checked the backports and tested building this branch with system Boost 1.76.0 and depends Boost 1.77.0.

Tree-SHA512: dc3e0a2b3c1e3e80f6570e329a08ebc5103c233c30562f660432891c90bacb4d88d5373e32b9ac34fd143be46b8e63900ce9f52786b04bc799a4d17ba9fd8499
2021-08-28 15:33:34 +08:00
fanquake
55a8a5b2df Merge bitcoin/bitcoin#22810: [0.21] qt: Pre-0.21.2rc2 translations update
2a7568999c qt: Pre-0.21.2rc2 translations update (Hennadii Stepanov)

Pull request description:

  New translations with insignificant amount of translated strings were ignored: `ach`, `cmn`, `gd`, `ig`, `sc`.

ACKs for top commit:
  fanquake:
    ACK 2a7568999c - didn't review any specific translations.

Tree-SHA512: fab299a7a3691b38f85812e9302ae3a6fda2b7bd95a824aaf5537f1bc066417f912c042fa4366432ed091244f051cc7d4c57161d8da1e4bd6261a85570f8f12e
2021-08-28 14:44:02 +08:00
Rafael Sadowski
d9b18c1290 Fix build with Boost 1.77.0
BOOST_FILESYSTEM_C_STR changed to accept the path as an argument

Github-Pull: bitcoin/bitcoin#22713
Rebased-From: acb7aad27e
2021-08-27 09:54:05 +03:00
Hennadii Stepanov
2d7f2606c1 ci: Run fuzzer task for the master branch only
Github-Pull: bitcoin/bitcoin#22730
Rebased-From: 5a9e255e5a
2021-08-27 09:54:04 +03:00
Hennadii Stepanov
2a7568999c qt: Pre-0.21.2rc2 translations update 2021-08-27 00:29:27 +03:00
W. J. van der Laan
3118a5eedf Merge bitcoin/bitcoin#22721: doc: add inital PR and author list to 0.21.2 release notes
2873e01c6a doc: add inital PR and author list to 0.21.2 release notes (fanquake)

Pull request description:

  Any further updates / version number adjustments can be done prior to final.

ACKs for top commit:
  laanwj:
    ACK 2873e01c6a

Tree-SHA512: 57135f64ccfc41ec63aa265eb25978a2afd68b6b8719e79358c52ec7d2dc0cee04b81f720b827263c381529f457667b0b1a8f7d835118dc56bf2a6aa9d321859
2021-08-17 15:42:43 +02:00
fanquake
2873e01c6a doc: add inital PR and author list to 0.21.2 release notes
Any further updates / version number adjustments can be done prior to
final.
2021-08-17 13:57:17 +08:00
W. J. van der Laan
89d148c8c6 qt: Translations update for 0.21.2rc1
Tree-SHA512: f0a74deb84711645ba112b364fbe958db51992f28d0ec87262dd0a21f1052a270f5fc8c13dfd6dc6f5a8a5580e7f1991b3de2d44e3a44252cd3c315dfc2e00ba
2021-08-11 13:23:05 +02:00
W. J. van der Laan
e94e433762 doc: Update manual pages for 0.21.2
Tree-SHA512: 26870ec4b8423879ccdbe0d74670985bf73f4814d32ff5d2c312acdd766e93e07e6a69bfb58b0288be8ba402d283ce493684420b254f8535936cb061ee11c0d2
2021-08-11 13:20:35 +02:00
W. J. van der Laan
bf672ce25a build: Bump version to 0.21.2rc1
Tree-SHA512: 73d4df24ad516ca54ab23bcbd686223447a208904bb18a7a34400daab6d4b07322a7f244504547c772ede08b9e8606291df9d101236d8fd6debcb43563d069ac
2021-08-11 12:08:43 +02:00
MarcoFalke
4b523c8f0a Merge bitcoin/bitcoin#22569: [0.21] Rate limit the processing of rumoured addresses
2a57108051 Avoid Appveyor compilation failure (Pieter Wuille)
a653aacbd6 Add logging and addr rate limiting statistics (Pieter Wuille)
aaa4833fc9 Functional tests for addr rate limiting (Pieter Wuille)
8df3e5bd84 Randomize the order of addr processing (Pieter Wuille)
83dfe6c65e Rate limit the processing of incoming addr messages (Pieter Wuille)

Pull request description:

  Backport of #22387.

  The rate at which IP addresses are rumoured (through ADDR and ADDRV2 messages) on the network seems to vary from 0 for some non-participating nodes, to 0.005-0.025 addr/s for recent Bitcoin Core nodes. However, the current codebase will happily accept and process an effectively unbounded rate from attackers. There are measures to limit the influence attackers can have on the addrman database (bucket restrictions based on source IPs), but still - there is no need to permit them to feed us addresses at a rate that's orders of magnitude larger than what is common on the network today, especially as it will cause us to spam our peers too.

  This PR implements a [token bucket](https://en.wikipedia.org/wiki/Token_bucket) based rate limiter, allowing an average of 0.1 addr/s per connection, with bursts up to 1000 addresses at once. Whitelisted peers as well as responses to GETADDR requests are exempt from the limit. New connections start with 1 token, so as to not interfere with the common practice of peers' self-announcement.

  Due to the lack of the `Peer` struct in 0.21, the relevant fields have been added to `CNodeState` instead, necessitating additional locks, and slightly different structure to avoid too much `cs_main` grabbing. The last test-improving commit has also been dropped, as the code has changed too much. Most of the behavior is still tested however, just not the part that compares with RPC statistics.

ACKs for top commit:
  achow101:
    ACK 2a57108051
  GeneFerneau:
    Approach + code review ACK [2a57108](2a57108051)
  jnewbery:
    reACK 2a57108051

Tree-SHA512: ecf4891ac6173d732aa40b4d05fc0dce94127a613cb9051bf6188a2f95824f8234b17d386dd0b352ddf3d352202cc2ff07915ae35657d8e64907e3f80703d1d9
2021-08-06 19:46:04 +02:00
Pieter Wuille
2a57108051 Avoid Appveyor compilation failure 2021-08-05 09:48:25 -07:00
Pieter Wuille
a653aacbd6 Add logging and addr rate limiting statistics
Includes logging improvements by Vasil Dimov and John Newbery.

Github-Pull: #22387
Rebased-From: f424d601e1
2021-08-05 09:40:04 -07:00
Pieter Wuille
aaa4833fc9 Functional tests for addr rate limiting
Github-Pull: #22387
Rebased-From: b4ece8a1cd
2021-08-05 09:40:04 -07:00
Pieter Wuille
8df3e5bd84 Randomize the order of addr processing
Github-Pull: #22387
Rebased-From: 5648138f59
2021-08-05 09:40:04 -07:00
Pieter Wuille
83dfe6c65e Rate limit the processing of incoming addr messages
While limitations on the influence of attackers on addrman already
exist (affected buckets are restricted to a subset based on incoming
IP / network group), there is no reason to permit them to let them
feed us addresses at more than a multiple of the normal network
rate.

This commit introduces a "token bucket" rate limiter for the
processing of addresses in incoming ADDR and ADDRV2 messages.
Every connection gets an associated token bucket. Processing an
address in an ADDR or ADDRV2 message from non-whitelisted peers
consumes a token from the bucket. If the bucket is empty, the
address is ignored (it is not forwarded or processed). The token
counter increases at a rate of 0.1 tokens per second, and will
accrue up to a maximum of 1000 tokens (the maximum we accept in a
single ADDR or ADDRV2). When a GETADDR is sent to a peer, it
immediately gets 1000 additional tokens, as we actively desire many
addresses from such peers (this may temporarily cause the token
count to exceed 1000).

The rate limit of 0.1 addr/s was chosen based on observation of
honest nodes on the network. Activity in general from most nodes
is either 0, or up to a maximum around 0.025 addr/s for recent
Bitcoin Core nodes. A few (self-identified, through subver) crawler
nodes occasionally exceed 0.1 addr/s.

Github-Pull: #22387
Rebased-From: 0d64b8f709
2021-08-05 09:40:00 -07:00
MarcoFalke
068ac69b56 Merge bitcoin/bitcoin#22578: [0.21] Additional backports
55e941f5df test: Fix intermittent feature_taproot issue (MarcoFalke)
681f728a35 ci: Build with --enable-werror by default, and document exceptions (Hennadii Stepanov)
89426c43fb ci: Fix macOS brew install command (Hennadii Stepanov)

Pull request description:

  This backports a few changes to fix CI failures we are seeing with the 0.21 branch.

  Backports #21663, this might be the easiest way to fix the macOS CI failures we're seeing. i.e in #22569. The underlying issue is that the older CI images are using a version of brew that without running `brew update` first, is trying to download packages like Boost, from bintray (which no-longer works).

  This also includes #20182, as by fixing macOS failure, via running `brew upgrade`, we end up using a newer version of miniupnpc, which emits a GNU extension related warning, and causes the build to fail, because we use `-Werror`.

  Backporting #20535 should fix #22581.

ACKs for top commit:
  hebasto:
    ACK 55e941f5df, I verified changes by backporting locally.

Tree-SHA512: 3ab2c5c73c707d0f5b862264f3a0179cdeee30ae55aae872f3c3e0bb81d71a5027c39ba830210c99a21f98cc86c4167c4f215e24d1a8891ec79ce512debf82df
2021-07-30 09:15:14 +02:00
fanquake
52778f4245 Merge bitcoin/bitcoin#22580: [0.21] Backport: Reset scantxoutset progress before inferring descriptors
080b47d9ce rpc: reset scantxoutset progress on finish (Pavol Rusnak)

Pull request description:

  Backport of #19362.

ACKs for top commit:
  achow101:
    Code Review ACK 080b47d9ce

Tree-SHA512: 1f58965393663bfc0796fc06ef846bc87521d04d79c2a62227acf4d466de649db7d244c8992a32aa1086e6bf0ac92fb8a5aeadf4673441fefa505e40c02d5daf
2021-07-30 10:22:08 +08:00
MarcoFalke
55e941f5df test: Fix intermittent feature_taproot issue
Github-Pull: #20535
Rebased-From: fa275e1539
2021-07-29 20:25:28 +08:00
Hennadii Stepanov
681f728a35 ci: Build with --enable-werror by default, and document exceptions
Github-Pull: #20182
Rebased-From: 2f6fe4e4e9
2021-07-29 20:25:03 +08:00
Hennadii Stepanov
89426c43fb ci: Fix macOS brew install command
Details: https://github.com/Homebrew/discussions/discussions/691

Github-Pull: #21663
Rebased-From: b7381552cd
2021-07-29 16:52:15 +08:00
Pavol Rusnak
080b47d9ce rpc: reset scantxoutset progress on finish
Github-Pull: #19362
Rebased-From: 8c4129b454
2021-07-29 16:02:26 +08:00
fanquake
997e528a34 Merge bitcoin/bitcoin#22427: [0.21] gui: Backports for 0.21.2
e3f1da4bf3 qt: Draw "eye" sign at the beginning of watch-only addresses (Hennadii Stepanov)
6ca54ce2ae qt: Do not extend recent transaction width to address/label string (Hennadii Stepanov)
f220368220 qt: Do not use QClipboard::Selection on Windows and macOS. (Hennadii Stepanov)

Pull request description:

  Backports https://github.com/bitcoin-core/gui/pull/277, https://github.com/bitcoin-core/gui/pull/365.

ACKs for top commit:
  fanquake:
    ACK e3f1da4bf3
  jarolrod:
    ACK e3f1da4bf3

Tree-SHA512: 43cc2ac48f4e5014bfdbe86cc904bb36d2be9fcd257f0fc0800c384bd727bb98466723e450a8909b06708784ad91184be599c49cf60de2e4377202774cb878f6
2021-07-29 11:20:57 +08:00
Hennadii Stepanov
e3f1da4bf3 qt: Draw "eye" sign at the beginning of watch-only addresses
Github-Pull: bitcoin-core/gui#365
Rebased-From: cd46c11577
2021-07-11 12:03:33 +03:00
Hennadii Stepanov
6ca54ce2ae qt: Do not extend recent transaction width to address/label string
Github-Pull: bitcoin-core/gui#365
Rebased-From: 9ea1da6fc9
2021-07-11 12:03:12 +03:00
Hennadii Stepanov
f220368220 qt: Do not use QClipboard::Selection on Windows and macOS.
Windows and macOS do not support the global mouse selection.

Github-Pull: bitcoin-core/gui#277
Rebased-From: 7f3a5980c1
2021-07-11 12:03:11 +03:00
fanquake
bd2f4164c6 Merge bitcoin/bitcoin#22366: [0.21] fuzz: add missing ECCVerifyHandle to base_encode_decode
da816247f0 util: Properly handle -noincludeconf on command line (MarcoFalke)
513613d8a8 Cleanup -includeconf error message (MarcoFalke)
70eac6fcd0 Fix crash when parsing command line with -noincludeconf=0 (MarcoFalke)
c5357fa415 fuzz: add missing ECCVerifyHandle to base_encode_decode (Andrew Poelstra)

Pull request description:

  Backports #22279, #22002 and #22137 to fix fuzzing issues in the 0.21 branch: https://github.com/bitcoin/bitcoin/runs/2864012729.

ACKs for top commit:
  achow101:
    ACK da816247f0

Tree-SHA512: ab8751387e42e03ff43594ae34be8ed0dba903d7da1aaecb9f19c08366570d8995abe89ba0c9bafe37662940f3e83bef1e9e50f330e86114cd6a773becd1fd21
2021-07-08 11:52:07 +08:00
MarcoFalke
4c29b63cfb Merge bitcoin/bitcoin#22255: [0.21] wallet: Do not iterate a directory if having an error while accessing it
7b0b201d10 wallet: Do not iterate a directory if having an error while accessing it (Hennadii Stepanov)

Pull request description:

  This change prevents infinite looping for, for example, system folders
  on Windows.

  Github-Pull: #21907
  Rebased-From: 29c9e2c2d2

  Note: Trivial backport, but in a differently-named function in another file

ACKs for top commit:
  hebasto:
    ACK 7b0b201d10, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: d41ab267250e8bfd9289cacf1fd804cc1a3bb20fc479dc9da5a69ebf26530b552b11b2ee6b11e17a1c146ca792ee65bd64eeb2269fa5e73a70361da8a2a09925
2021-07-01 08:35:53 +02:00
MarcoFalke
da816247f0 util: Properly handle -noincludeconf on command line
This bug was introduced in commit
fad0867d6a.

Unit test
Co-Authored-By: Russell Yanofsky <russ@yanofsky.org>

Github-Pull: #22137
Rebased-From: fa910b4765
2021-06-30 10:39:33 +08:00
MarcoFalke
513613d8a8 Cleanup -includeconf error message
Remove the erroneous trailing newline '\n'. Also, print only the first
value to remove needless redundancy in the error message.

Github-Pull: #22002
Rebased-From: fad0867d6a
2021-06-30 10:23:54 +08:00
MarcoFalke
70eac6fcd0 Fix crash when parsing command line with -noincludeconf=0
Github-Pull: #22002
Rebased-From: fa9f711c37
2021-06-30 10:23:51 +08:00
Andrew Poelstra
c5357fa415 fuzz: add missing ECCVerifyHandle to base_encode_decode
GitHub Pull: #22279
Rebased-From: 906d791311
2021-06-29 11:03:27 +08:00
MarcoFalke
926f76cb20 Merge bitcoin/bitcoin#22191: [0.21] gitian: Use custom MacOS code signing tool
0fe60a84ae Use latest signapple commit (Andrew Chow)
5313d6aed2 gitian: Remove codesign_allocate and pagestuff from MacOS build (Andrew Chow)
27d691b6b5 gitian: use signapple to create the MacOS code signature (Andrew Chow)
2f33e339a8 gitian: use signapple to apply the MacOS code signature (Andrew Chow)
65ce833042 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 0fe60a84ae 🍀

Tree-SHA512: e864048fab02a1857161602dd53abba552ca3f859c133a47a5e62c28d3e4de9cd099bce86123a1b5892042b09f51cc1ddd2ed1b0c71bfba162710eaee3f5bf91
2021-06-19 09:50:11 +02:00
Hennadii Stepanov
7b0b201d10 wallet: Do not iterate a directory if having an error while accessing it
This change prevents infinite looping for, for example, system folders
on Windows.

Github-Pull: #21907
Rebased-From: 29c9e2c2d2
2021-06-15 19:02:45 +00:00
Andrew Chow
0fe60a84ae 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:04:36 -04:00
Andrew Chow
5313d6aed2 gitian: Remove codesign_allocate and pagestuff from MacOS build
Github-Pull: #20880
Rebased-From: 2c403279e2
2021-06-08 16:58:40 -04:00
Andrew Chow
27d691b6b5 gitian: use signapple to create the MacOS code signature
Github-Pull: #20880
Rebased-From: f55eed2514
2021-06-08 16:57:32 -04:00
Andrew Chow
2f33e339a8 gitian: use signapple to apply the MacOS code signature
Github-Pull: #20880
Rebased-From: 95b06d2185
2021-06-08 16:57:28 -04:00
Andrew Chow
65ce833042 gitian: install signapple in gitian-osx-signer.yml
Github-Pull: #20880
Rebased-From: 42bb1ea363
2021-06-08 16:56:08 -04:00
fanquake
419f9b3b3b Merge bitcoin/bitcoin#22022: Final backports for 0.21.2rc1
09620b89f5 Update Windows code signing certificate (Andrew Chow)
46320ba72f Remove user input from URI error message (unknown)
f2a88986a1 p2p, bugfix: use NetPermissions::HasFlag() in CConnman::Bind() (Jon Atack)

Pull request description:

ACKs for top commit:
  achow101:
    ACK 09620b89f5 Diffs match.
  hebasto:
    ACK 09620b89f5, tested https://github.com/bitcoin-core/gui/pull/280 behavior.
  fanquake:
    ACK 09620b89f5

Tree-SHA512: 1c4aaec42ea047261b5d30851bca605540eccf572708403335b38016127d3230b5380b3f5ef03921ed62192239b0d3da9787d51f557ed7911bf6bb2a7c172753
2021-05-31 15:31:31 +08:00
Andrew Chow
09620b89f5 Update Windows code signing certificate
Github-Pull: bitcoin/bitcoin#22017
Rebased-From: 167fb1fc72
2021-05-22 10:45:21 +02:00
unknown
46320ba72f Remove user input from URI error message
+ Detailed error messages for invalid address
+ Used `IsValidDestination` instead of `IsValidDestinationString`
+ Referred to https://github.com/bitcoin/bitcoin/pull/20832 for solution

Github-Pull: bitcoin-core/gui#280
Rebased-From: 3bad0b3fad
2021-05-22 10:45:20 +02:00
Jon Atack
f2a88986a1 p2p, bugfix: use NetPermissions::HasFlag() in CConnman::Bind()
PF_NOBAN is a multi-flag that includes PF_DOWNLOAD, so the conditional
in CConnman::Bind() using a bitwise AND will return the same result
for both the "noban" status and the "download" status.

Example:

`PF_DOWNLOAD` is `0b1000000`
`PF_NOBAN`    is `0b1010000`

This makes a check like `flags & PF_NOBAN` return `true` even if `flags`
is equal to `PF_DOWNLOAD`.

If `-whitebind=download@1.1.1.1:8765` is specified, then `1.1.1.1:8765`
should be added to the list of local addresses. We only want to avoid
adding to local addresses (that are advertised) a whitebind that has a
`noban@` flag.

As a result of a mis-check in `CConnman::Bind()` we would not have added
`1.1.1.1:8765` to the local addresses in the example above.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>

Github-Pull: bitcoin/bitcoin#21644
Rebased-From: dde69f20a0
2021-05-22 09:58:26 +02:00
W. J. van der Laan
58c0742632 Merge bitcoin/bitcoin#21932: [0.21] depends: update Qt 5.9 source url
deff4e763e depends: update Qt 5.9 source url (Kittywhiskers Van Gogh)

Pull request description:

  ## Expected Behavior

  Running `make` in the depends directory should result in the successful building of host platform dependencies

  ## Actual Behavior

  `make` terminates as `qt.mk` points to (now) outdated URL path for Qt 5.9 sources, returning error 404

  ## Remedy

  Update `qt.mk` to point to updated source location as Qt has relocated them

ACKs for top commit:
  RandyMcMillan:
    tACK deff4e7
  hebasto:
    ACK deff4e763e, I have verified the new link, and checked that old one is unavailable:
  jarolrod:
    tACK deff4e763e

Tree-SHA512: d5b11a678c871a87e6884a35641178ee349728ead51da06018953be36aab5a30aef9c80b549da49802e87903eb0b7836cc343301325bd8c505cb4246f6752505
2021-05-13 13:43:35 +02:00
Kittywhiskers Van Gogh
deff4e763e depends: update Qt 5.9 source url 2021-05-12 22:35:32 +05:30
W. J. van der Laan
8584a4460d doc: Archive and clean out release notes post-0.21.1
Tree-SHA512: 0ae93cb9dae1449318913a7a6f32c233aefddf77335dc1ad416e84beab39ab45cd863073ddc69a243bbb704951d99646f734717f71d9599a54592699f15d84ab
2021-05-05 16:18:38 +02:00
MarcoFalke
bbd89d23b3 Merge bitcoin/bitcoin#21860: [0.21] Backport update to Boost download URL
856de5bd5e build,boost: update download url. (fdov)

Pull request description:

  Backports #21662 to the 0.21 branch. Boost has migrated it's download URLs due to bintrays imminent closure. The Boost site has also been updated to point to the new URLs. i.e: https://www.boost.org/users/history/version_1_70_0.html.

  Github-Pull: #21662
  Rebased-From: 36c10b9f4b

ACKs for top commit:
  jarolrod:
    ACK 856de5bd5e

Tree-SHA512: cae7262f963dd6e00af699c3e1bce2ee3ff9f76c5dcc24c8a5bf37025b53de28e4cb80de65a380208ee1841a89736d5c35605e40b728b6c7a9f026d8165d74c8
2021-05-05 08:54:13 +02:00
fdov
856de5bd5e build,boost: update download url.
- bintray is closing.
    - updated to jfrog.io.

Github-Pull: #21662
Rebased-From: 36c10b9f4b
2021-05-05 09:41:09 +08:00
W. J. van der Laan
194b9b8792 build: Bump RC to 0 (-final)
Tree-SHA512: b63d8c2514fa34d4503da8a37fb42948e03610e06dae6aaef7ba3d2568efd3bb138e7510da569a49d83c2618fa697ba949d55880fc2884a75a87028259d7c544
2021-04-29 21:31:20 +02:00
W. J. van der Laan
d97d0d31a6 doc: Merge release notes fragment, merge taproot description from wiki
Co-authored-by: David A. Harding <dave@dtrt.org>
Co-authored-by: Jon Atack <jon@atack.com>
Co-authored-by: Pieter Wuille <pieter@wuille.net>

Tree-SHA512: dd9ac416ff22276833111198445d76cf8417012a6faad0c3560276f1dcf24586ff41c65ac3430fbf1e840aaa563d3dd101671cff306b0fd92aa2ee03bb7f926b
2021-04-22 22:13:28 +02:00
W. J. van der Laan
5577e0a486 doc: Add PR and author list to release notes for 0.21.1
Tree-SHA512: c74b12dee645bd8d3dcff8d572a82369ea0895339d0d12e5360182421fa8cef4d3eba309ff7668e97dc24cd6afc800ab9ceb4eca5458085acf12c368f6c2f859
2021-04-19 06:01:38 +02:00
W. J. van der Laan
329eafa7f4 doc: Regenerate manual pages for 0.21.1rc1
Tree-SHA512: cc9cd502dc40d89f34b1b043e96df180f0e16ba7c6e039866b349d19aff582d1c4b4ab8e8960b4f427d72ad5f97c7c1e8fec3f2e008a0107dea33a2c8f13febc
2021-04-16 13:41:41 +02:00
W. J. van der Laan
e85dfdbf31 build: Bump version to 0.21.1rc1 2021-04-16 13:23:58 +02:00
W. J. van der Laan
ab20518191 gui: Pre-rc1 translations update
Tree-SHA512: 6978293bda56b0cb1370f3ddf201477a2f12e0b8c9462d3f4703b837d9be4be65142a5e97c4a473fb9fa90edd83dba8a98ea3b0ecc335062868d1e6c550241b2
2021-04-16 13:21:07 +02:00
fanquake
f8bbee425e Merge #21614: [0.21] test: Backports
b8af67eeef fuzz: cleanups for versionbits fuzzer (Anthony Towns)
79cdb4a198 test: make sure non-IP peers get discouraged and disconnected (Vasil Dimov)
b765f41164 test: also check disconnect in denialofservice_tests/peer_discouragement (Vasil Dimov)
dfeb6c10bb test: use pointers in denialofservice_tests/peer_discouragement (Vasil Dimov)

Pull request description:

  Backport tests

ACKs for top commit:
  vasild:
    ACK b8af67eeef
  jnewbery:
    ACK b8af67eeef
  ajtowns:
    ACK b8af67eeef ; visually compared individual commits to originals, checked original commits are in master

Tree-SHA512: 22f665560f9d452993b12508d93d93ff54e3e91dcf39f731e27aedfb891570168066c185413d455bee4fa082c011b65ea1b0eee51e3633392b07a0db008d51c8
2021-04-16 17:57:18 +08:00
Anthony Towns
b8af67eeef fuzz: cleanups for versionbits fuzzer
Github-Pull: #21489
Rebased-From: aa7f418fe3
2021-04-16 11:21:02 +02:00
Vasil Dimov
79cdb4a198 test: make sure non-IP peers get discouraged and disconnected
Github-Pull: #21571
Rebased-From: 81747b2171
2021-04-16 11:20:04 +02:00
Vasil Dimov
b765f41164 test: also check disconnect in denialofservice_tests/peer_discouragement
Use `CConnmanTest` instead of `CConnman` and add the nodes to it
so that their `fDisconnect` flag is set during disconnection.

Github-Pull: #21571
Rebased-From: 637bb6da36
2021-04-16 11:20:04 +02:00
Vasil Dimov
dfeb6c10bb test: use pointers in denialofservice_tests/peer_discouragement
This is a non-functional change that replaces the `CNode` on-stack
variables with `CNode` pointers.

The reason for this is that it would allow us to add those `CNode`s
to `CConnman::vNodes[]` which in turn would allow us to check that they
are disconnected properly - a `CNode` object must be in
`CConnman::vNodes[]` in order for its `fDisconnect` flag to be set.

If we store pointers to the on-stack variables in `CConnman` then it
would crash at the end, trying to `delete` them.

Github-Pull: #21571
Rebased-From: 4d6e246fa4
2021-04-16 11:20:04 +02:00
MarcoFalke
e3b76b6c13 Merge #21701: [0.21] Speedy trial activation for Taproot
cbd64c3a28 Add mainnet and testnet taproot activation params (Andrew Chow)
ec7824396b chainparams: drop versionbits threshold to 90% for mainnnet and signet (Anthony Towns)
600357306e versionbits: simplify state transitions (Anthony Towns)
3acf0379e0 versionbits: Add explicit NEVER_ACTIVE deployments (Anthony Towns)
b529222ad1 fuzz: test versionbits delayed activation (Anthony Towns)
71917e01eb tests: test versionbits delayed activation (Anthony Towns)
4cab84cfdf versionbits: Add support for delayed activation (Anthony Towns)
f9517e6014 tests: clean up versionbits test (Anthony Towns)
1c0164544c tests: test ComputeBlockVersion for all deployments (Anthony Towns)
2e9e7f4329 tests: pull ComputeBlockVersion test into its own function (Anthony Towns)

Pull request description:

  Backport of #21377 and #21686

ACKs for top commit:
  instagibbs:
    cherry-pick ACK cbd64c3a28
  jnewbery:
    ACK cbd64c3a28
  Sjors:
    tACK cbd64c3
  MarcoFalke:
    cherry-pick-only ACK cbd64c3a28 🌾

Tree-SHA512: e9efb0ca9986d685161bcba5ed43efdc5f1dca88322cf65faccf17009b567c2d930c2aba4d1541539fc65347574ed4faa3d4558b907c779d1c128b3d2c681f31
2021-04-16 11:12:35 +02:00
fanquake
0fe5b6130c Merge #21520: [0.21] wallet: Avoid requesting fee rates multiple times during coin selection
d61fb07da7 Rename CoinSelectionParams::effective_fee to m_effective_feerate (Andrew Chow)
5fc381e443 wallet: Move discard feerate fetching to CreateTransaction (Andrew Chow)
bcd716670b wallet: Move long term feerate setting to CreateTransaction (Andrew Chow)
34c89f92f3 wallet: Replace nFeeRateNeeded with effective_fee (Andrew Chow)
48fc675163 wallet: Use existing feerate instead of getting a new one (Andrew Chow)

Pull request description:

  Backport of #21083

ACKs for top commit:
  MarcoFalke:
    cherry-pick-only re-ACK d61fb07da7 🔙
  instagibbs:
    utACK d61fb07da7

Tree-SHA512: 23b212301bb467153dd9723903918ae01dd520525c81d541c411e7a4381e46594fe032e2a7c06ddcff7dc56dcb546991d50187c33fcff08ec45bd835cc01bd19
2021-04-16 10:10:50 +08:00
Andrew Chow
cbd64c3a28 Add mainnet and testnet taproot activation params
Github-Pull: #21686
Rebased-From: f979b3237f
2021-04-15 20:59:21 -04:00
Anthony Towns
ec7824396b chainparams: drop versionbits threshold to 90% for mainnnet and signet
Github-Pull: #21377
Rebased-From: ffe33dfbd4
2021-04-15 20:59:19 -04:00
Anthony Towns
600357306e versionbits: simplify state transitions
This removes the DEFINED->FAILED transition and changes the
STARTED->FAILED transition to only occur if signalling didn't pass the
threshold. This ensures that it is always possible for activation to
occur, no matter what settings are chosen, or the speed at which blocks
are found.

Github-Pull: #21377
Rebased-From: f054f6bcd2
2021-04-15 20:59:17 -04:00
Anthony Towns
3acf0379e0 versionbits: Add explicit NEVER_ACTIVE deployments
Previously we used deployments that would timeout prior to Bitcoin's
invention, which allowed the deployment to still be activated in unit
tests. This switches those deployments to be truly never active.

Github-Pull: #21377
Rebased-From: 55ac5f568a
2021-04-15 20:59:13 -04:00
Anthony Towns
b529222ad1 fuzz: test versionbits delayed activation
Github-Pull: #21377
Rebased-From: dd07e6da48
2021-04-15 20:58:49 -04:00
Anthony Towns
71917e01eb tests: test versionbits delayed activation
Github-Pull: #21377
Rebased-From: dd85d5411c
2021-04-15 20:58:42 -04:00
Anthony Towns
4cab84cfdf versionbits: Add support for delayed activation
Github-Pull: #21377
Rebased-From: 73d4a70639
2021-04-15 12:03:27 -04:00
Anthony Towns
f9517e6014 tests: clean up versionbits test
Simplify the versionbits unit test slightly to make the next set of
changes a little easier to follow.

Github-Pull: #21377
Rebased-From: 9e6b65f6fa
2021-04-15 12:03:25 -04:00
Anthony Towns
1c0164544c tests: test ComputeBlockVersion for all deployments
This generalises the ComputeBlockVersion test so that it can apply to
any activation parameters we might set, and checks all the parameters
set for each deployment on each chain, to simultaneously ensure that the
deployments we have configured work sensibly, and that the test code
does not suffer bitrot in the event that all interesting deployments
are buried.

Github-Pull: #21377
Rebased-From: 5932744450
2021-04-15 12:03:24 -04:00
Anthony Towns
2e9e7f4329 tests: pull ComputeBlockVersion test into its own function
The intent here is to allow checking ComputeBlockVersion behaviour with
each deployment, rather than only testdummy on mainnet. This commit does
the trivial refactoring component of that change.

Github-Pull: #21377
Rebased-From: 63879f0a47
2021-04-15 12:03:22 -04:00
fanquake
e358b43f7d Merge #21640: [0.21] Introduce DeferredSignatureChecker and have SignatureExtractorClass subclass it
f79189ca54 Test that signrawtx works when a signed CSV and CLTV inputs are present (Andrew Chow)
7de019bc61 Introduce DeferringSignatureChecker and inherit with SignatureExtractor (Andrew Chow)

Pull request description:

  Backport of #21166

ACKs for top commit:
  MarcoFalke:
    checked this is a clean cherry-pick did not review ACK f79189ca54 🐖
  instagibbs:
    ACK f79189ca54

Tree-SHA512: 51e945c9b353713423d3886c557066c66a6517d2300523832e5a5471ab91a8943385096d9bf5b46910477cb4c47470431690cf3da09b9f6956fe030f13ddff51
2021-04-12 09:28:18 +08:00
Andrew Chow
f79189ca54 Test that signrawtx works when a signed CSV and CLTV inputs are present
Github-Pull: #21166
Rebased-From: a97a9298ce
2021-04-08 18:19:02 -04:00
Andrew Chow
7de019bc61 Introduce DeferringSignatureChecker and inherit with SignatureExtractor
Introduces a DeferringSignatureChecker which simply takes a
BaseSignatureChecker and passes through everything.
SignatureExtractorChecker now subclasses DeferringSignatureChecker. This
allows for all BaseSignatureChecker functions to be implemented for
SignatureExtractorChecker, while allowing for future signature checkers
which opreate similarly to SignatureExtractorChecker.

Github-Pull: #21166
Rebased-From: 6965456c10
2021-04-08 18:18:55 -04:00
MarcoFalke
0b9a046c1a Merge #21616: [0.21] build: link against -lsocket if required for *ifaddrs
1a9a2cb7dc net: add ifaddrs.h include (fanquake)
f6896dfde7 build: check if -lsocket is required with *ifaddrs (fanquake)
e99d6d0c7c rand: only try and use freeifaddrs if available (fanquake)

Pull request description:

  Backports #21486 to the 0.21 branch. Related to #21485.

ACKs for top commit:
  MarcoFalke:
    cherry-pick-only ACK 1a9a2cb7dc did not test or review 🚶

Tree-SHA512: 400dcf0f0bffa9b2c820403936b894969113a2bd82a32ae29d3fb73c4ef9ffafb55f5325fcc4929f6e685f8932be6f566f5dd2163ecf8a64b154b0c401109311
2021-04-07 07:32:44 +02:00
fanquake
1a9a2cb7dc net: add ifaddrs.h include
Github-Pull: #21486
Rebased-From: 4783115fd4
2021-04-06 17:36:11 +08:00
fanquake
f6896dfde7 build: check if -lsocket is required with *ifaddrs
Github-Pull: #21486
Rebased-From: 879215e665
2021-04-06 17:35:41 +08:00
fanquake
e99d6d0c7c rand: only try and use freeifaddrs if available
Github-Pull: #21486
Rebased-From: 87deac66aa
2021-04-06 17:34:57 +08:00
Andrew Chow
d61fb07da7 Rename CoinSelectionParams::effective_fee to m_effective_feerate
It's a feerate, not a fee. Also follow the style guide for member names.

Github-Pull: #21083
Rebased-From: f9cd2bfbcc
2021-04-01 12:44:00 -04:00
MarcoFalke
65fa43bda1 Merge #21469: BIP 350: Implement Bech32m and use it for v1+ segwit addresses (0.21 backport)
f2195d7c4a Backport invalid address tests (Pieter Wuille)
1e9671116f naming nits (Fabian Jahr)
7dfe406e20 Add signet support to gen_key_io_test_vectors.py (Pieter Wuille)
593e206627 Use Bech32m encoding for v1+ segwit addresses (Pieter Wuille)
8944aaa6d6 Add Bech32m test vectors (Pieter Wuille)
1485533092 Implement Bech32m encoding/decoding (Pieter Wuille)

Pull request description:

  Backport of #20861. Also includes #21471.

ACKs for top commit:
  jnewbery:
    utACK f2195d7c4a
  MarcoFalke:
    cherry-pick re-ACK f2195d7c4a , only change is version number in doc/bips and new test commit 🍝
  fanquake:
    ACK f2195d7c4a - performed the backport, changes look sane. Have not tested extensively.

Tree-SHA512: 7dc043e44d7cda07d73331a7b49666b9db98c99f2635dab0cfeb45422dbfbe75a7b44d0aff85ef6369d412d8a5041ed0826c86ffdfc13c5fbff74adfe4d91c1a
2021-04-01 12:34:08 +02:00
Pieter Wuille
f2195d7c4a 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:09:48 -07:00
Fabian Jahr
1e9671116f naming nits
Github-Pull: #20861
Rebased-From: 03346022d6
2021-03-27 12:09:48 -07:00
Pieter Wuille
7dfe406e20 Add signet support to gen_key_io_test_vectors.py
Github-Pull: #20861
Rebased-From: 2e7c80fb5b
2021-03-27 12:09:48 -07:00
Pieter Wuille
593e206627 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:09:44 -07:00
Pieter Wuille
8944aaa6d6 Add Bech32m test vectors
Github-Pull: #20861
Rebased-From: 25b1c6e13d
2021-03-27 12:09:13 -07:00
Pieter Wuille
1485533092 Implement Bech32m encoding/decoding
Github-Pull: #20861
Rebased-From: da2bb6976d
2021-03-27 12:09:13 -07:00
Andrew Chow
5fc381e443 wallet: Move discard feerate fetching to CreateTransaction
Instead of fetching the discard feerate for each SelectCoinsMinConf
iteration, fetch and cache it once during CreateTransaction so that it
is shared for each SelectCoinsMinConf through
coin_selection_params.m_discard_feerate.

Does not change behavior.

Github-Pull: #21083
Rebased-From: bdd0c2934b
2021-03-24 00:34:54 -04:00
Andrew Chow
bcd716670b wallet: Move long term feerate setting to CreateTransaction
Instead of setting the long term feerate for each SelectCoinsMinConf
iteration, set it once during CreateTransaction and let it be shared
with each SelectCoinsMinConf through
coin_selection_params.m_long_term_feerate.

Does not change behavior.

Github-Pull: #21083
Rebased-From: 448d04b931
2021-03-24 00:23:02 -04:00
Andrew Chow
34c89f92f3 wallet: Replace nFeeRateNeeded with effective_fee
Make sure that all fee calculations use the same feerate.
coin_selection_params.effective_fee is the variable we use for all fee
calculations, so get rid of remaining nFeeRateNeeded usages and just
directly set coin_selection_params.effective_fee.

Does not change behavior.

Github-Pull: #21083
Rebased-From: e2f429e6bb
2021-03-24 00:19:34 -04:00
Andrew Chow
48fc675163 wallet: Use existing feerate instead of getting a new one
During each loop of CreateTransaction, instead of constantly getting a
new feerate, use the feerate that we have already fetched for all
fee calculations. Thix fixes a race condition where the feerate required
changes during each iteration of the loop.

This commit changes behavior as the "Fee estimation failed" error will
now take priority over "Signing transaction failed".

Github-Pull: #21083
Rebased-From: 1a6a0b0dfb
2021-03-24 00:19:27 -04:00
fanquake
a30fd40735 Merge #20901: [0.21.1]: rc1 Backports
5a2d98c640 doc: Remove outdated comment (Hennadii Stepanov)
8426e3a8a1 fuzz: Bump FuzzedDataProvider.h (MarcoFalke)
14e3f2a1c9 fuzz: Bump FuzzedDataProvider.h (MarcoFalke)
a48c9d3161 fuzz: Update FuzzedDataProvider.h from upstream (LLVM) (practicalswift)
6746cd078b doc: add signet to doc/bitcoin-conf.md (Jon Atack)
58975d5c0a doc: add signet to share/examples/bitcoin.conf (Jon Atack)
b35711efde Update vcpkg checkout commit. (Aaron Clauson)
3a12672419 GUI: Write PSBTs to file with binary mode (Andrew Chow)
36ecf5eb87 tests: Test that a fully signed tx given to signrawtx is unchanged (Andrew Chow)
4ef1e4bd40 test: disallow sendtoaddress/sendmany when private keys disabled (Jon Atack)
d6b5eb5fcc Disallow sendtoaddress and sendmany when private keys disabled (Andrew Chow)
08dada8456 util: Disallow negative mocktime (MarcoFalke)
95218ee95c net: Avoid UBSan warning in ProcessMessage(...) (practicalswift)
4607019798 fix the unreachable code at feature_taproot (Bruno Garcia)
6dc58e9945 qt: Use "fusion" style on macOS Big Sur with old Qt (Hennadii Stepanov)
e2ebc8567a raise helpMessageDialog (randymcmillan)
a98f211940 Fix MSVC build after gui#176 (Hennadii Stepanov)
bdc64c9030 qt: Stop the effect of hidden widgets on the size of QStackedWidget (Hennadii Stepanov)
7bc4498234 qt: Fix TxViewDelegate layout (Hennadii Stepanov)
b7086e69ff qt: Add TransactionOverviewWidget class (Hennadii Stepanov)
0dba346a56 qt: Use layout manager for Create Wallet dialog (Hennadii Stepanov)
7bf3ed495b Bugfix: GUI: Restore SendConfirmationDialog button default to "Yes" (Luke Dashjr)
bdce029191 test: add test for banning of non-IP addresses (Vasil Dimov)
c33fbab25c net: allow CSubNet of non-IP networks (Vasil Dimov)

Pull request description:

  Current backports for *0.21.1*.

  One conflict was in the test case.

ACKs for top commit:
  ajtowns:
    ACK 5a2d98c640 -- checked 'rebased-from' patches are in master, and rebased patches are clean rebases (except for the first one which changes `""s` to `std::string("")` to avoid c++17 dependency). commits seem fine, but haven't reviewed in detail.
  fanquake:
    ACK 5a2d98c640 - branched off `0.21` and redid the backports. Minor conflict in c33fbab25c. The diff between my branch and #20901 was just in release notes, `_CLIENT_VERSION_RC` (#20901 branched before 95ea54ba08) and #21490 which has already been merged into `0.21`.

Tree-SHA512: 75d16d3cf9066a45759758b8185dc3b9dad6a6102c2ac9921f758a310e48d5d3122f0dafa515df42475235fc66a42cc04dd156ee1e61c86a1238bd11707642ea
2021-03-24 11:54:06 +08:00
MarcoFalke
1bad33f952 Merge #21490: [0.21] Backport versionbits tests
e775b0a6dd tests: Add fuzzing harness for versionbits (Anthony Towns)
0c471a5f30 tests: check never active versionbits (Anthony Towns)
3ba9283a47 tests: more helpful errors for failing versionbits tests (Anthony Towns)

Pull request description:

  Backport of unit test (#21334) and fuzz test (#21380) changes for versionbits.

Top commit has no ACKs.

Tree-SHA512: b68b570e48e0076bb2ade3b91c59612029235d2c9e39048d548aa141fa0906343fa492e9a981065fbdbbebecbbb3dcbaf39ec69228c7581178fcca567e8201b8
2021-03-21 09:55:21 +01:00
Hennadii Stepanov
5a2d98c640 doc: Remove outdated comment
The removed commit is wrong since v0.21.0.

Github-Pull: #21342
Rebased-From: f1f63ac3f8
2021-03-21 09:39:27 +01:00
MarcoFalke
8426e3a8a1 fuzz: Bump FuzzedDataProvider.h
Latest version from 0cccccf0d2/compiler-rt/include/fuzzer/FuzzedDataProvider.h

Github-Pull: #21397
Rebased-From: fa7dc7ae95
2021-03-21 09:35:15 +01:00
MarcoFalke
14e3f2a1c9 fuzz: Bump FuzzedDataProvider.h
Latest version from https://raw.githubusercontent.com/llvm/llvm-project/70de7e0d9a95b7fcd7c105b06bd90fdf4e01f563/compiler-rt/include/fuzzer/FuzzedDataProvider.h

Github-Pull: #20812
Rebased-From: fafce49336
2021-03-21 09:34:29 +01:00
practicalswift
a48c9d3161 fuzz: Update FuzzedDataProvider.h from upstream (LLVM)
Upstream revision: 6d0488f75b/compiler-rt/include/fuzzer/FuzzedDataProvider.h

Changes:
* [compiler-rt] FuzzedDataProvider: add ConsumeData and method.
* [compiler-rt] Fix a typo in a comment in FuzzedDataProvider.h.
* [compiler-rt] Add ConsumeRandomLengthString() version without arguments.
* [compiler-rt] Refactor FuzzedDataProvider for better readability.
* [compiler-rt] FuzzedDataProvider: make linter happy.
* [compiler-rt] Mark FDP non-template methods inline to avoid ODR violations.

Github-Pull: #20740
Rebased-From: e3d2ba7c70
2021-03-21 09:33:42 +01:00
Jon Atack
6746cd078b doc: add signet to doc/bitcoin-conf.md
Github-Pull: #21384
Rebased-From: 4a285107c1
2021-03-21 09:32:33 +01:00
Jon Atack
58975d5c0a doc: add signet to share/examples/bitcoin.conf
Github-Pull: #21384
Rebased-From: 21b6a23373
2021-03-21 09:32:31 +01:00
Aaron Clauson
b35711efde Update vcpkg checkout commit.
Previously vcpkg was relying on https://repo.msys2.org/mingw/i686/mingw-w64-i686-pkg-config-0.29.2-1-any.pkg.tar.xz which is no longer available. The vcpkg source has been updated to use http://repo.msys2.org/mingw/i686/mingw-w64-i686-pkg-config-0.29.2-2-any.pkg.tar.zst. This PR updates the commit ID used to checkout vcpkg for the updated URL.

Github-Pull: #21446
Rebased-From: b9e3f35306
2021-03-21 08:40:51 +01:00
Anthony Towns
e775b0a6dd tests: Add fuzzing harness for versionbits
Github-Pull: #21380
Rebased-From: 1639c3b76c
2021-03-21 14:24:41 +10:00
Andrew Chow
3a12672419 GUI: Write PSBTs to file with binary mode
Github-Pull: #bitcoin-core/gui#188
Rebased-From: cc3971c9ff
2021-03-11 21:15:09 +01:00
Andrew Chow
36ecf5eb87 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
2021-03-06 08:18:16 +01:00
Jon Atack
4ef1e4bd40 test: disallow sendtoaddress/sendmany when private keys disabled
Github-Pull: #21201
Rebased-From: 6bfbc97d71
2021-02-19 12:47:43 +01:00
Andrew Chow
d6b5eb5fcc Disallow sendtoaddress and sendmany when private keys disabled
Github-Pull: #21201
Rebased-From: 0997019e76
2021-02-19 12:47:40 +01:00
MarcoFalke
08dada8456 util: Disallow negative mocktime
Signed-off-by: practicalswift <practicalswift@users.noreply.github.com>

Github-Pull: #21043
Rebased-From: 3ddbf22ed1
2021-02-11 12:42:40 +01:00
practicalswift
95218ee95c net: Avoid UBSan warning in ProcessMessage(...)
Github-Pull: #21043
Rebased-From: f5f2f97168
2021-02-11 12:42:31 +01:00
Bruno Garcia
4607019798 fix the unreachable code at feature_taproot
Github-Pull: #21081
Rebased-From: 5e0cd25e29
2021-02-08 08:51:02 +01:00
Hennadii Stepanov
6dc58e9945 qt: Use "fusion" style on macOS Big Sur with old Qt
The "macintosh" style is broken on macOS Big Sur at least for Qt 5.9.8.

Github-Pull: #bitcoin-core/gui#177
Rebased-From: 4e1154dfd1
2021-01-28 10:15:59 +01:00
randymcmillan
e2ebc8567a raise helpMessageDialog
Github-Pull: bitcoin-core/gui#167
Rebased-From: 77114462f2
2021-01-26 09:51:56 +01:00
Hennadii Stepanov
a98f211940 Fix MSVC build after gui#176
Github-Pull: #20983
Rebased-From: c5354e4641
2021-01-22 07:41:18 +01:00
Hennadii Stepanov
bdc64c9030 qt: Stop the effect of hidden widgets on the size of QStackedWidget
Layouts of the hidden widgets, those are children of QStackedWidget,
could prevent to adjust the size of the parent widget in the
WalletFrame widget.

Github-Pull: bitcoin-core/gui#176
Rebased-From: af58f5b12c
2021-01-21 18:58:49 +01:00
Hennadii Stepanov
7bc4498234 qt: Fix TxViewDelegate layout
This change (1) prevents overlapping date and amount strings,
and (2) guaranties that "eye" sign at the end of the watch-only
address/label is always visible.

Github-Pull: bitcoin-core/gui#176
Rebased-From: f0d04795e2
2021-01-21 18:58:45 +01:00
Hennadii Stepanov
b7086e69ff qt: Add TransactionOverviewWidget class
Github-Pull: bitcoin-core/gui#176
Rebased-From: d439921406
2021-01-21 18:58:42 +01:00
Hennadii Stepanov
0dba346a56 qt: Use layout manager for Create Wallet dialog
Github-Pull: bitcoin-core/gui#171
Rebased-From: d4feb6812a
2021-01-21 18:57:10 +01:00
Wladimir J. van der Laan
7d8a10a6f4 Merge #20933: [0.21] doc: Archive release notes, Add template for minor release
b6d3502993 doc: Archive release notes, Add template for minor release (MarcoFalke)

Pull request description:

  Same as #20931, but also clearing the template

ACKs for top commit:
  laanwj:
    ACK b6d3502993

Tree-SHA512: 929d2f774904b58d62dd60d4dcf8447f7e40d959596f3f97462076627d89549ad39dc39c56456f4c8861353cfdf6633abca0be3e84a783f174be1ee1b8d213a4
2021-01-14 11:30:54 +01:00
MarcoFalke
b6d3502993 doc: Archive release notes, Add template for minor release 2021-01-14 10:51:15 +01:00
Wladimir J. van der Laan
95ea54ba08 build: Bump RC to 0 (-final)
Tree-SHA512: 1a626b9bb7fb04ece4acb24ffcfed178cc5128d16af6860ed37097b6ed36be8b33797bd70a6da0364cd6a9246ebc02fbb83f9523abf5f8dc3c7a524a58416a8f
2021-01-13 22:52:34 +01:00
Wladimir J. van der Laan
91f0632464 Merge #20929: doc: Move 0.21.0 release notes from wiki
66e6742a27 doc: Move 0.21.0 release notes from wiki (Wladimir J. van der Laan)

Pull request description:

  These were the contents of https://github.com/bitcoin-core/bitcoin-devwiki/wiki/0.21.0-Release-Notes-Draft, minus the paragraph about gauging how fast taproot can be deployed.

Top commit has no ACKs.

Tree-SHA512: d7bb61a76d87cb9d9e43602bf81b51ea463e3a098748e42440950d08e6f6e84bf6c02b07b297ac959f979aa72682775dd2ae2be6d30b22977ed60ed454b9c66d
2021-01-13 22:51:42 +01:00
Wladimir J. van der Laan
66e6742a27 doc: Move 0.21.0 release notes from wiki 2021-01-13 19:43:29 +01:00
Luke Dashjr
7bf3ed495b Bugfix: GUI: Restore SendConfirmationDialog button default to "Yes"
The SendConfirmationDialog is used for bumping the fee, where "Send" doesn't really make sense

Github-Pull: #bitcoin-core/gui#148
Rebased-From: 8775691383
2021-01-13 17:56:34 +01:00
Vasil Dimov
bdce029191 test: add test for banning of non-IP addresses
Co-authored-by: Jon Atack <jon@atack.com>

Github-Pull: #20852
Rebased-From: 39b43298d9
2021-01-11 11:57:21 +01:00
Vasil Dimov
c33fbab25c net: allow CSubNet of non-IP networks
Allow creation of valid `CSubNet` objects of non-IP networks and only
match the single address they were created from (like /32 for IPv4 or
/128 for IPv6).

This fixes a deficiency in `CConnman::DisconnectNode(const CNetAddr& addr)`
and in `BanMan` which assume that creating a subnet from any address
using the `CSubNet(CNetAddr)` constructor would later match that address
only. Before this change a non-IP subnet would be invalid and would not
match any address.

Github-Pull: #20852
Rebased-From: 94d335da7f
2021-01-11 11:55:17 +01:00
Wladimir J. van der Laan
15877d160c qt: Pre-rc5 translations update
Tree-SHA512: f6986d00a9565ee7fbf8dd2766dca9c90af931e2dc2fdc0faf5734a2e9be1a0e0774031a20207aa2afa645f1d6229aac9751c84ada324a8dcb463497fb9f237f
2021-01-05 16:46:14 +01:00
Wladimir J. van der Laan
4e7b4ce7eb build: Bump RC to rc5
Tree-SHA512: ed01a7a66e5d064c77c948b87afce832b33852005ec1dc556bf4fcc69fa3743aaa6dea4c03a5d2d520682d8de9c7596f1eec3db326caf754726d1ca4aab2cec3
2021-01-05 15:25:43 +01:00
Wladimir J. van der Laan
6e28714da3 Merge #20850: [0.21] final rc5 backports
3308718a6b Revert "Add patch to make codesign_allocate compatible with Apple's" (Pieter Wuille)

Pull request description:

ACKs for top commit:
  jonasschnelli:
    ACK 3308718a6b
  fanquake:
    ACK 3308718a6b

Tree-SHA512: 2a1002499e6f0da6e9ac7ae393e478bd34e55390ff1a41c5b16b4e91e339fef4b82642237af6725507337cadf9ddc1f2f23b2512d8dd47e5a345770c6c0d1b02
2021-01-05 15:23:48 +01:00
Pieter Wuille
3308718a6b Revert "Add patch to make codesign_allocate compatible with Apple's"
This reverts commit a4118c6e20.

Github-Pull: #20855
Rebased-From: a0eb4c551e
2021-01-05 09:47:47 +01:00
Wladimir J. van der Laan
e6ad8a6220 doc: Generate manual pages for 0.21.0rc4
Tree-SHA512: c2ff50dbb54c42db9d56f1fcb0d8a2ce9c89089254f1a6b6f2aa98959f47699cd72c7771b53490232938b45d9bb030ce7fe08707c62190e68ada0ddbd8b6e13a
2021-01-03 16:16:56 +01:00
Wladimir J. van der Laan
212525337e build: Bump RC to rc4
Tree-SHA512: f22375573f1737d64b62351cdec58f0f3e17d9f21b044430f366cbf272514369b73f24cc34e499e2637f0a0fa57ce5b925dd2df8ba0265b1b9c37beb7c8b8e22
2021-01-03 13:43:03 +01:00
Wladimir J. van der Laan
93ce429f0e qt: Pre-rc4 translations update
Tree-SHA512: 14259d2f469ea588f364f64fdd89b90cbcde8f66ddc011d96d656a06920584c0577e64fa15a41a1dc1c8c8a98a1f955748c61def6807b1bb71b0113bb28268f2
2021-01-03 13:12:39 +01:00
Wladimir J. van der Laan
ac125e960f Merge #20669: [0.21] final rc4 backports
b1c0f97483 [doc] Add permissions to the getpeerinfo help. (Amiti Uttarwar)
1fda7db64f rpc: Add missing description of vout in getrawtransaction help text (Ben Carman)
ef7a155cf0 qt: Align layout of checkboxes (Hennadii Stepanov)
35a10e4ebc Add patch to make codesign_allocate compatible with Apple's (Pieter Wuille)
e70ccb0bc4 doc: update -externalip documentation in tor.md (Jon Atack)
2c8482d0a2 doc: add tor.md section on how to get tor info via bitcoind (Jon Atack)
0c1fa78af1 doc: update tor.md address examples from onion v2 to v3 (Jon Atack)
84e8d5467f doc: warn that incoming conns are unlikely when not using default ports (Adam Jonas)
e4440eb67b doc: Add warnings for http interfaces limitations (Fabian Jahr)
85dabd1249 Removed redundant git pull from appveyor config. (Aaron Clauson)
249d61a382 Adjusted msvc compiler and linker settings to remove optimisations that are causing sporadic ABI issues on Visual Studio updates. (Aaron Clauson)
e7b53d4721 This change to the appveyor CI config for msvc builds reverses a change introduced in #19960. It re-applies a setting to inform vcpkg to only build release vesions of the dependencies rather than the default of debug and release. (Aaron Clauson)
8273ea3b8d Move signet onion seed from v2 to v3 (Sjors Provoost)

Pull request description:

  The remaining backports to get rc4 out. Currently only waiting on the macOS build fix.

ACKs for top commit:
  benthecarman:
    ACK b1c0f97483
  Sjors:
    ACK b1c0f97

Tree-SHA512: 53eaecd531ba461678917cb630d67f1e6bb737d64022abe971eaced6eca366c9ed593e44276bd9c7ad7b3aebe3850d2d29282eb310e10b547986d10fe77a8482
2021-01-02 15:01:09 +01:00
Amiti Uttarwar
b1c0f97483 [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
2020-12-26 21:28:15 +01:00
Ben Carman
1fda7db64f rpc: Add missing description of vout in getrawtransaction help text
Github-Pull: #20731
Rebased-From: b23349b880
2020-12-21 20:01:02 +01:00
Hennadii Stepanov
ef7a155cf0 qt: Align layout of checkboxes
Github-Pull: bitcoin-core/gui#155
Rebased-From: e71b656f31
2020-12-18 08:56:36 +01:00
Pieter Wuille
35a10e4ebc Add patch to make codesign_allocate compatible with Apple's
Github-Pull: #20644
Rebased-From: a4118c6e20
2020-12-17 21:38:57 +01:00
Jon Atack
e70ccb0bc4 doc: update -externalip documentation in tor.md
Github-Pull: #19961
Rebased-From: a34eceb4cc
2020-12-17 12:29:23 +01:00
Jon Atack
2c8482d0a2 doc: add tor.md section on how to get tor info via bitcoind
Github-Pull: #19961
Rebased-From: dc8a591222
2020-12-17 12:29:22 +01:00
Jon Atack
0c1fa78af1 doc: update tor.md address examples from onion v2 to v3
Github-Pull: #19961
Rebased-From: e1765d8b04
2020-12-17 12:29:15 +01:00
Adam Jonas
84e8d5467f doc: warn that incoming conns are unlikely when not using default ports
Github-Pull: #20668
Rebased-From: 010eed3ce0
2020-12-17 12:28:37 +01:00
Fabian Jahr
e4440eb67b doc: Add warnings for http interfaces limitations
Github-Pull: #19050
Rebased-From: 5c3eaf9983
2020-12-17 10:02:47 +01:00
Aaron Clauson
85dabd1249 Removed redundant git pull from appveyor config.
Github-Pull: #20506
Rebased-From: 2c69381f3d
2020-12-16 13:27:31 +01:00
Aaron Clauson
249d61a382 Adjusted msvc compiler and linker settings to remove optimisations that are causing sporadic ABI issues on Visual Studio updates.
Tidied up debug and release configuration blocks in common project file to avoid duplication.

Updated appveyor config to use latest Visual Studio 2019 image.

Changed appveyor config file hash to use a new version of Qt pre-compiled binaries built for Visual Studio 2019 v16.8.1.

Bumped vcpkg version to tag '2020.11-1' for binary caching feature.

See #20392 for related discussion.

Github-Pull: #20506
Rebased-From: 8b99e609e7
2020-12-16 13:27:29 +01:00
Aaron Clauson
e7b53d4721 This change to the appveyor CI config for msvc builds reverses a change introduced in #19960. It re-applies a setting to inform vcpkg to only build release vesions of the dependencies rather than the default of debug and release.
It had been expected that the vcpkg manifest mechanism introduced in #19960 would do this automatically but it turns out not to be the case.

Github-Pull: #20489
Rebased-From: fa18e7cbc5
2020-12-16 13:27:11 +01:00
Sjors Provoost
8273ea3b8d Move signet onion seed from v2 to v3
Github-Pull: #20660
Rebased-From: 3e6657a14d
2020-12-16 07:36:44 +01:00
Wladimir J. van der Laan
9ae536d368 build: Bump RC to rc3
Tree-SHA512: a6d81259e17c6b55b33c638a9054eaee2f82322ce0482a73f85562cd56efeb73e2b19b3f7b44fd97e7caa6e757573a8c13ae8967b1e6492f2483d2e057d96c87
2020-12-10 20:00:43 +01:00
Wladimir J. van der Laan
e6d0fa3ef6 gui: pre-rc3 translations update
Tree-SHA512: 2aba5a743ecc1f9e336b8db036640182eb3e85449d9ab4c883c97e6ac75466760939b29c18560205d25489d58091212f7f1dcf651388deb675f824703c943cbf
2020-12-10 19:28:24 +01:00
Wladimir J. van der Laan
3fee499bc3 Merge #20612: [0.21] final rc3 backports
48134a09ad doc: Update wallet database installation guide for macOS (Hennadii Stepanov)
f51e1cb291 build: Use Homebrew's sqlite package if it is available (Hennadii Stepanov)
48f8929aad build, refactor: Check that Homebrew's qt5 package is actually installed (Hennadii Stepanov)
96124a2041 build: Check that Homebrew's berkeley-db4 package is actually installed (Hennadii Stepanov)
61e316e661 Don't set BDB flags when configuring without (Jonas Schnelli)
ce13b99020 Add regression test for incorrect decoding (Pieter Wuille)
1caa32e3f2 Improve heuristic hex transaction decoding (Pieter Wuille)
0d3c140c4d test: add coverage for passing fee rate as a string (Jon Atack)
06c84232b3 wallet, bugfix: allow send to take string fee rate values (Jon Atack)
bead935470 Send and require SENDADDRV2 before VERACK (Pieter Wuille)
9e806887a8 Don't send 'sendaddrv2' to pre-70016 software (Pieter Wuille)

Pull request description:

ACKs for top commit:
  laanwj:
    ACK 48134a09ad

Tree-SHA512: 92f1199b96ab7775f88e882ec7fedf43118a4b8452d1c8d0b1cf072d8de153bbb601c7381bc1c5c80c93803c6f9942d54646e9c74e3a6703ce13854fb383fd5e
2020-12-10 19:18:38 +01:00
Hennadii Stepanov
48134a09ad doc: Update wallet database installation guide for macOS
Github-Pull: #20527
Rebased-From: c932e0d67e
2020-12-10 13:54:59 +01:00
Hennadii Stepanov
f51e1cb291 build: Use Homebrew's sqlite package if it is available
Github-Pull: #20527
Rebased-From: ee7b84e63c
2020-12-10 13:54:52 +01:00
Hennadii Stepanov
48f8929aad build, refactor: Check that Homebrew's qt5 package is actually installed
This change unifies Homebrew packages workflow, and does not change
behavior.

Github-Pull: #20527
Rebased-From: c96d1f65a5
2020-12-10 13:54:50 +01:00
Hennadii Stepanov
96124a2041 build: Check that Homebrew's berkeley-db4 package is actually installed
Github-Pull: #20563
Rebased-From: d3ef947524
2020-12-10 13:54:46 +01:00
Jonas Schnelli
61e316e661 Don't set BDB flags when configuring without
Github-Pull: #20478
Rebased-From: 982e548a9a
2020-12-10 13:54:42 +01:00
Pieter Wuille
ce13b99020 Add regression test for incorrect decoding
Github-Pull: #20595
Rebased-From: 0f949cde3d
2020-12-10 11:37:57 +01:00
Pieter Wuille
1caa32e3f2 Improve heuristic hex transaction decoding
Whenever both encodings are permitted, try both, and if only one succeeds,
return that one. Otherwise prefer the one for which the heuristic sanity
check passes. If that is the case for neither or for both, return the
extended-permitting deserialization.

Github-Pull: #20595
Rebased-From: 39c42c4420
2020-12-10 11:37:53 +01:00
Jon Atack
0d3c140c4d test: add coverage for passing fee rate as a string
Github-Pull: #20573
Rebased-From: 6fa72ceb80
2020-12-10 11:37:41 +01:00
Jon Atack
06c84232b3 wallet, bugfix: allow send to take string fee rate values
Github-Pull: #20573
Rebased-From: ce207d6b93
2020-12-10 11:37:36 +01:00
Pieter Wuille
bead935470 Send and require SENDADDRV2 before VERACK
See the corresponding BIP change: https://github.com/bitcoin/bips/pull/1043

Github-Pull: #20564
Rebased-From: 1583498fb6
2020-12-10 11:37:22 +01:00
Pieter Wuille
9e806887a8 Don't send 'sendaddrv2' to pre-70016 software
Github-Pull: #20564
Rebased-From: c5a8919660
2020-12-10 11:37:18 +01:00
MarcoFalke
aa4b8ebfec Merge #20510: [backport] wallet: allow zero-fee fundrawtransaction/walletcreatefundedpsbt and other fixes
6313362553 Use the correct incremental fee constant in bumpfee help (Jon Atack)
6e4969f76f Update feeRate (BTC/kvB) to fee_rate (sat/vB) in wallet_bumpfee (Jon Atack)
54e1edcc2b Allow zero-fee fundrawtxn and walletcreatefundedpsbt calls (Jon Atack)

Pull request description:

  Github-Pull: #20426
  Rebased-From: 1b3d700928

  Github-Pull: #20426
  Rebased-From: 3f1e10b2b1

  Github-Pull: #20426
  Rebased-From: 9f08780dd7

Top commit has no ACKs.

Tree-SHA512: 89556f69ca4a36d86d6ab5df740b6d5de809f13d45b03450fb526362b1eabd3d2d5285f97c552dc0bcb07e17ac2e6c557ff46335962e6bcf366d36ad412f257c
2020-12-04 18:14:15 +01:00
fanquake
68bd88597a Merge #20505: [backport] build: Avoid secp256k1.h include from system
01b647b1a2 build: Avoid secp256k1.h include from system (Niklas Gögge)

Pull request description:

  Backports #20469 to the 0.21 branch.

ACKs for top commit:
  hebasto:
    ACK 01b647b1a2, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: c098055b5e413be6f438d1d43e80c1943329ebb708531d8d82e72de402bddeb6f8b812303f9ae5a45abf62b3ff87fa909fbbf7fb56dca7959ecb9061febae4a1
2020-12-02 10:11:37 +08:00
Jon Atack
6313362553 Use the correct incremental fee constant in bumpfee help
and remove redundant units ("Must be at least 1.000 sat/vB sat/vB" -> "1.00 sat vB")

Github-Pull: #20426
Rebased-From: 9f08780dd7
2020-11-26 19:32:30 +01:00
Jon Atack
6e4969f76f Update feeRate (BTC/kvB) to fee_rate (sat/vB) in wallet_bumpfee
as the feeRate argument should soon be deprecated.

Also loosen one test (and a similar one) that caused a one-off CI failure with:
expected message
'Insufficient total fee 0.00000141, must be at least 0.00001704 (oldFee 0.00000999 + incrementalFee 0.00000705)'
actual message
'Insufficient total fee 0.00000141, must be at least 0.00001712 (oldFee 0.00001007 + incrementalFee 0.00000705)'

Github-Pull: #20426
Rebased-From: 3f1e10b2b1
2020-11-26 19:32:06 +01:00
Jon Atack
54e1edcc2b Allow zero-fee fundrawtxn and walletcreatefundedpsbt calls
A check to raise an error on zero-fee txns was mistakenly extended in commit
a0d4957 from the bumpfee and send{toaddress, many} RPCs to also include
fundrawtransaction and walletcreatefundedpsbt.

This commit overrides zero fee rate checking for these two RPCs, not only for
the feeRate (BTC/kvB) arg to return to previous behavior, but also for the new
fee_rate (sat/vB) arg.

Github-Pull: #20426
Rebased-From: 1b3d700928
2020-11-26 19:31:26 +01:00
Niklas Gögge
01b647b1a2 build: Avoid secp256k1.h include from system
GitHub-Pull: #20469
Rebase-From: e95aaefe25
2020-11-26 09:38:44 +01:00
MarcoFalke
9facca3ce0 Merge #20490: [backport] wallet: upgradewallet fixes, improvements, test coverage
ca8cd893bb wallet: fix and improve upgradewallet error responses (Jon Atack)
99d56e3571 wallet: fix and improve upgradewallet result responses (Jon Atack)
2498b04ce8 Don't upgrade to HD split if it is already supported (Andrew Chow)
c46c18b788 wallet: refactor GetClosestWalletFeature() (Jon Atack)

Pull request description:

  Github-Pull: #20403
  Rebased-From: c46c18b788

  Github-Pull: #20403
  Rebased-From: 2498b04ce8

  Github-Pull: #20403
  Rebased-From: 99d56e3571

  Github-Pull: #20403
  Rebased-From: ca8cd893bb

Top commit has no ACKs.

Tree-SHA512: b18a1d015c963298740c585385eaa056988464112c88a519fe619be22dc78a8f6a102365cf799c50b781a77a09bec82b58ce411ab007b48f8b5de876e9c75060
2020-11-25 18:03:53 +01:00
MarcoFalke
d47d16025e Merge #20485: [backport] wallet: Do not treat default constructed types as None-type
fa69c2c784 wallet: Do not treat default constructed types as None-type (MarcoFalke)
fac4e136fa refactor: Change pointer to reference because it can not be null (MarcoFalke)

Pull request description:

  Github-Pull: #20410
  Rebased-From: fac4e136fa

  Github-Pull: #20410
  Rebased-From: fa69c2c784

Top commit has no ACKs.

Tree-SHA512: 05c3fe29677710b57dcc482fd529b0ab79475519f60f9cfde19f956c4e2212d09b042af458ec4f1272c581360ce841b735dca4df144e0798b3ccf16547de9cd0
2020-11-25 11:27:42 +01:00
MarcoFalke
4e964094db Merge #20486: [backport] test: Fix intermittent issue in mempool_compatibility
fa05d19bd6 test: Fix intermittent issue in mempool_compatibility (MarcoFalke)

Pull request description:

  Github-Pull: #20456
  Rebased-From: fa05d19bd6

Top commit has no ACKs.

Tree-SHA512: c07ed3ffab315da2bf70427882e2da8216964fef97dd538d7c46c5d5b3563b0732626ffbe4b0e19537ad49a8542eedb3c08850cccacdef466f24582defe99d22
2020-11-25 11:25:33 +01:00
Wladimir J. van der Laan
7264bcd20f qt: Pre-rc2 translations update
Tree-SHA512: 465a7b586f3eff476bd9648ff70e37e11f51e67f048dc1265ffcc1132c4e063515495ec6cbdf6ebb4abd5f5b08615595ce12273ce9abebc8ffef9c7b8375ac20
2020-11-25 08:57:45 +01:00
Wladimir J. van der Laan
ba19f9b490 build: Bump RC to rc2
Tree-SHA512: 122ccac91708dda65a30aab6313c770008ccc0571402d92bc24fbefed578002626899c1754676118f5a456a63dbea84d1fe2fef46af57b77837f438c6e637b26
2020-11-25 08:50:47 +01:00
fanquake
17294c1820 Merge #20479: Fix QPainter non-determinism on macOS (0.21 backport)
ab23a83400 Fix QPainter non-determinism on macOS (Andrew Chow)

Pull request description:

  Aplies a patch to Qt that fixes the non-determinism by modifying Qt. The
  source of the non-determinism is how LLVM 8 optimizes qt_intersect_spans
  when compiling. The particular optimization that seems to be causing the
  problems is that a temp variable is being added for spans->y. For some
  reason, when it does this, it chooses different instructions to use when
  making that variable. We bypass this problem by patching
  qt_intersect_spans to always make and use this local variable.

  Github-Pull: #20447
  Rebased-From: 8f7d1b39ef
  Tree-SHA512: 558da5c2bb0373e2a89f2c219170f802036e0e87cc8e808336b23d074152cb893007a440f46ec957156b0921355cd18502710f2d224f27bc26e934c50ebebc41

ACKs for top commit:
  jonasschnelli:
    codereview ACK ab23a83400
  achow101:
    ACK ab23a83400

Tree-SHA512: 10991fe2b5452b1393678c315281cfdca011e9bb2cd8094a002746e690890ace148ac2dbf39c5fbe5e7f4cd39eeebfa0a715c065cff150cf70e9733cb0ff32d6
2020-11-25 10:07:28 +08:00
MarcoFalke
3fae2f95f1 Merge #20475: [backport] RPC: unloadwallet: Clarify docs/error when both the RPC endpoint and wallet_name parameter specify a wallet
b1f59d55d9 RPC/Wallet: unloadwallet: Clarify docs/error when both the RPC endpoint and wallet_name parameter specify a wallet (Luke Dashjr)

Pull request description:

  Github-Pull: #20462
  Rebased-From: b1f59d55d9

Top commit has no ACKs.

Tree-SHA512: 2ee0a8a280f56baf196a3a48a59620f297075d23898e6aa3b3e677cdde74826688614d27a477a1448306234c2109fa39083946f691ced10d8bbc53006730784e
2020-11-24 17:28:19 +01:00
Andrew Chow
ab23a83400 Fix QPainter non-determinism on macOS
Aplies a patch to Qt that fixes the non-determinism by modifying Qt. The
source of the non-determinism is how LLVM 8 optimizes qt_intersect_spans
when compiling. The particular optimization that seems to be causing the
problems is that a temp variable is being added for spans->y. For some
reason, when it does this, it chooses different instructions to use when
making that variable. We bypass this problem by patching
qt_intersect_spans to always make and use this local variable.

Github-Pull: #20447
Rebased-From: 8f7d1b39ef
Tree-SHA512: 558da5c2bb0373e2a89f2c219170f802036e0e87cc8e808336b23d074152cb893007a440f46ec957156b0921355cd18502710f2d224f27bc26e934c50ebebc41
2020-11-24 16:32:42 +01:00
Luke Dashjr
b1f59d55d9 RPC/Wallet: unloadwallet: Clarify docs/error when both the RPC endpoint and wallet_name parameter specify a wallet 2020-11-24 05:31:58 +00:00
MarcoFalke
fa05d19bd6 test: Fix intermittent issue in mempool_compatibility 2020-11-23 09:27:36 +01:00
MarcoFalke
bf9548bc59 Merge #20431: [backport 0.21] tests: shrink feature_taproot transfer of funds tx
7ffac12545 tests: shrink feature_taproot transfer of funds tx (Anthony Towns)

Pull request description:

  Github-Pull: #20428
  Rebased-From: 7ffac12545

Top commit has no ACKs.

Tree-SHA512: 4e6b37a44dca3e29d5168b7eb9238a7ce0bbb9b0924a21671537a7c534790fb6b05b1a30a404db434fade030b4f369adfc73694ef85d91884bb7349adddc5f6a
2020-11-20 11:50:10 +01:00
Anthony Towns
7ffac12545 tests: shrink feature_taproot transfer of funds tx 2020-11-20 07:29:42 +10:00
Jon Atack
ca8cd893bb wallet: fix and improve upgradewallet error responses 2020-11-19 20:00:53 +01:00
Jon Atack
99d56e3571 wallet: fix and improve upgradewallet result responses 2020-11-19 20:00:50 +01:00
MarcoFalke
fa69c2c784 wallet: Do not treat default constructed types as None-type 2020-11-19 13:48:38 +01:00
Wladimir J. van der Laan
80496f9e81 build: Set msvc builds's CLIENT_VERSION_IS_RELEASE
Of course, this one was in another place too.

Tree-SHA512: 87784829b1f700dcf5fd22daad0c920cfb25485ae17eff0b3e236513dc543c8643e568f39d418d43ea0eeb330fcac93ab2276cda8253ec6538d01e20d102d10c
2020-11-19 09:38:57 +01:00
Andrew Chow
2498b04ce8 Don't upgrade to HD split if it is already supported
It is unnecessary to upgrade to FEATURE_HD_SPLIT if this feature is
already supported by the wallet. Because upgrading to FEATURE_HD_SPLIT
actually requires upgrading to FEATURE_PRE_SPLIT_KEYPOOL, users would
accidentally be upgraded to FEATURE_PRE_SPLIT_KEYPOOL instead of nothing
being done.

Fixes the issue described at
https://github.com/bitcoin/bitcoin/pull/20403#discussion_r526063920
2020-11-19 08:04:05 +01:00
Jon Atack
c46c18b788 wallet: refactor GetClosestWalletFeature() 2020-11-18 16:11:47 +01:00
Wladimir J. van der Laan
6cde7bb9b2 doc: Generate manual pages for 0.21.0rc1
Tree-SHA512: d3e4f927d39f38317242b376f7cbd04ff3ab2b5795ffb5912a1e193b3bc27fa0e7fe55446b62c22df6a213509c2c489a66cde866992706a6ddd0ebbddc713303
2020-11-18 10:43:41 +01:00
Wladimir J. van der Laan
463b316822 build: Bump version for 0.21.0rc1
Tree-SHA512: 5bfe150de6e808a6af499e1f01fbfde91fca3fd726e3d457172e94161c4a18fb508824a4b2a58a35ac582d505e4e9da1287a349b51be863dc5bd4fa858400863
2020-11-18 10:33:34 +01:00
MarcoFalke
fac4e136fa refactor: Change pointer to reference because it can not be null 2020-11-18 08:33:26 +01:00
219 changed files with 48746 additions and 6328 deletions

View File

@@ -1,29 +1,30 @@
version: '{branch}.{build}'
skip_tags: true
image: Previous Visual Studio 2019
image: Visual Studio 2019
configuration: Release
platform: x64
clone_depth: 5
environment:
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_DOWNLOAD_URL: 'https://github.com/sipsorcery/qt_win_binary/releases/download/qt598x64_vs2019_v1681/qt598_x64_vs2019_1681.zip'
QT_DOWNLOAD_HASH: '00cf7327818c07d74e0b1a4464ffe987c2728b00d49d4bf333065892af0515c3'
QT_LOCAL_PATH: 'C:\Qt5.9.8_x64_static_vs2019'
VCPKG_INSTALL_PATH: 'C:\tools\vcpkg\installed'
VCPKG_COMMIT_ID: '40230b8e3f6368dcb398d649331be878ca1e9007'
VCPKG_TAG: '75522bb1f2e7d863078bcd06322348f053a9e33f'
install:
# 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:
# The powershell block below is to set up vcpkg to install the c++ dependencies. The pseudo code is:
# a. Checkout the vcpkg source (including port files) for the specific checkout and build the vcpkg binary,
# b. Install the missing packages using the vcpkg manifest.
# b. Append a setting to the vcpkg cmake config file to only do release builds of dependencies (skipping deubg builds saves ~5 mins).
# Note originally this block also installed the dependencies using 'vcpkg install'. Dependencies are now installed
# as part of the msbuild command using vcpkg mainfests.
- ps: |
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
git -c advice.detachedHead=false checkout $env:VCPKG_TAG
.\bootstrap-vcpkg.bat > $null
Add-Content "C:\tools\vcpkg\triplets\$env:PLATFORM-windows-static.cmake" "set(VCPKG_BUILD_TYPE release)"
cd "$env:APPVEYOR_BUILD_FOLDER"
before_build:
# Powershell block below is to download and extract the Qt static libraries. The pseudo code is:

View File

@@ -107,6 +107,7 @@ task:
task:
name: 'x86_64 Linux [GOAL: install] [focal] [no depends, only system libs, sanitizers: fuzzer,address,undefined]'
only_if: $CIRRUS_BRANCH == $CIRRUS_DEFAULT_BRANCH || $CIRRUS_BASE_BRANCH == $CIRRUS_DEFAULT_BRANCH
<< : *GLOBAL_TASK_TEMPLATE
container:
image: ubuntu:focal
@@ -131,8 +132,9 @@ task:
task:
name: 'macOS 10.14 native [GOAL: install] [GUI] [no depends]'
macos_brew_addon_script:
- brew install boost libevent berkeley-db4 qt miniupnpc ccache zeromq qrencode sqlite libtool automake pkg-config gnu-getopt
brew_install_script:
- brew update
- brew install boost libevent berkeley-db4 qt@5 miniupnpc ccache zeromq qrencode sqlite libtool automake pkg-config gnu-getopt
<< : *GLOBAL_TASK_TEMPLATE
osx_instance:
# Use latest image, but hardcode version to avoid silent upgrades (and breaks)

36
build-aux/m4/l_socket.m4 Normal file
View File

@@ -0,0 +1,36 @@
# Illumos/SmartOS requires linking with -lsocket if
# using getifaddrs & freeifaddrs
m4_define([_CHECK_SOCKET_testbody], [[
#include <sys/types.h>
#include <ifaddrs.h>
int main() {
struct ifaddrs *ifaddr;
getifaddrs(&ifaddr);
freeifaddrs(ifaddr);
}
]])
AC_DEFUN([CHECK_SOCKET], [
AC_LANG_PUSH(C++)
AC_MSG_CHECKING([whether ifaddrs funcs can be used without link library])
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_SOCKET_testbody])],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
LIBS="$LIBS -lsocket"
AC_MSG_CHECKING([whether getifaddrs needs -lsocket])
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_SOCKET_testbody])],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_MSG_FAILURE([cannot figure out how to use getifaddrs])
])
])
AC_LANG_POP
])

View File

@@ -56,7 +56,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>$(QtReleaseLibraries);%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/ignore:4206</AdditionalOptions>
<AdditionalOptions>/ignore:4206 /LTCG:OFF</AdditionalOptions>
</Link>
<ResourceCompile>
<AdditionalIncludeDirectories>..\..\src;</AdditionalIncludeDirectories>

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 20
#define CLIENT_VERSION_MINOR 21
/* Build revision */
#define CLIENT_VERSION_REVISION 99
#define CLIENT_VERSION_REVISION 2
/* Copyright holder(s) before %s replacement */
#define COPYRIGHT_HOLDERS "The %s developers"
@@ -253,7 +253,7 @@
#define PACKAGE_NAME "Bitcoin Core"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "Bitcoin Core 0.19.99"
#define PACKAGE_STRING "Bitcoin Core 0.21.2"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "bitcoin"
@@ -262,7 +262,7 @@
#define PACKAGE_URL "https://bitcoincore.org/"
/* Define to the version of this package. */
#define PACKAGE_VERSION "0.19.99"
#define PACKAGE_VERSION "0.21.2"
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */

View File

@@ -4,8 +4,6 @@
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
<UseNativeEnvironment>true</UseNativeEnvironment>
</PropertyGroup>
@@ -16,6 +14,8 @@
<VcpkgUseStatic>true</VcpkgUseStatic>
<VcpkgAutoLink>true</VcpkgAutoLink>
<VcpkgConfiguration>$(Configuration)</VcpkgConfiguration>
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
<PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' and !Exists('$(WindowsSdkDir)\DesignTime\CommonConfiguration\Neutral\Windows.props')">
@@ -45,66 +45,46 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<LinkIncremental>false</LinkIncremental>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<GenerateManifest>No</GenerateManifest>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<LinkIncremental>true</LinkIncremental>
<WholeProgramOptimization>false</WholeProgramOptimization>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<LinkIncremental>false</LinkIncremental>
<WholeProgramOptimization>true</WholeProgramOptimization>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<Optimization>Disabled</Optimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
<OptimizeReferences>false</OptimizeReferences>
<AdditionalOptions>/LTCG:OFF</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<Optimization>Disabled</Optimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -124,7 +104,6 @@
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Iphlpapi.lib;ws2_32.lib;Shlwapi.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Lib>

View File

@@ -4,7 +4,7 @@
<Target Name="CopyBuildArtifacts" Condition="'$(ConfigurationType)' != 'StaticLibrary'">
<ItemGroup>
<BuildArtifacts Include="$(OutDir)$(TargetName)$(TargetExt)"></BuildArtifacts>
<BuildArtifacts Include="$(OutDir)$(TargetName).pdb"></BuildArtifacts>
<BuildArtifacts Include="$(OutDir)$(TargetName).pdb" Condition="Exists('$(OutDir)$(TargetName).pdb')"></BuildArtifacts>
</ItemGroup>
<Copy SourceFiles="@(BuildArtifacts)" SkipUnchangedFiles="true" DestinationFolder="..\..\src\" Condition="'$(OutDir)' != ''"></Copy>
</Target>

View File

@@ -104,6 +104,7 @@
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactiondesc.cpp" />
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactiondescdialog.cpp" />
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactionfilterproxy.cpp" />
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactionoverviewwidget.cpp" />
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactionrecord.cpp" />
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactiontablemodel.cpp" />
<ClCompile Include="$(GeneratedFilesOutDir)\moc\moc_transactionview.cpp" />

View File

@@ -73,7 +73,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>$(QtLibraryDir)\Qt5Test.lib;$(QtReleaseLibraries);%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/ignore:4206</AdditionalOptions>
<AdditionalOptions>/ignore:4206 /LTCG:OFF</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
@@ -83,7 +83,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>$(QtDebugLibraries);%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/ignore:4206</AdditionalOptions>
<AdditionalOptions>/ignore:4206</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup>

View File

@@ -25,4 +25,4 @@ export RUN_FUNCTIONAL_TESTS=false
export GOAL="install"
# -Wno-psabi is to disable ABI warnings: "note: parameter passing for argument of type ... changed in GCC 7.1"
# This could be removed once the ABI change warning does not show up by default
export BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports CXXFLAGS=-Wno-psabi --enable-werror --with-boost-process"
export BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports CXXFLAGS=-Wno-psabi --with-boost-process"

View File

@@ -15,4 +15,4 @@ export XCODE_BUILD_ID=11C505
export RUN_UNIT_TESTS=false
export RUN_FUNCTIONAL_TESTS=false
export GOAL="deploy"
export BITCOIN_CONFIG="--with-gui --enable-reduce-exports --enable-werror --with-boost-process"
export BITCOIN_CONFIG="--with-gui --enable-reduce-exports --with-boost-process"

View File

@@ -9,7 +9,7 @@ export LC_ALL=C.UTF-8
export HOST=x86_64-apple-darwin16
export PIP_PACKAGES="zmq"
export GOAL="install"
export BITCOIN_CONFIG="--with-gui --enable-reduce-exports --enable-werror --with-boost-process"
export BITCOIN_CONFIG="--with-gui --enable-reduce-exports --with-boost-process"
export CI_OS_NAME="macos"
export NO_DEPENDS=1
export OSX_SDK=""

View File

@@ -14,3 +14,7 @@ export RUN_FUNCTIONAL_TESTS=false
export RUN_SECURITY_TESTS="true"
export GOAL="deploy"
export BITCOIN_CONFIG="--enable-reduce-exports --disable-gui-tests --without-boost-process"
# Compiler for MinGW-w64 causes false -Wreturn-type warning.
# See https://sourceforge.net/p/mingw-w64/bugs/306/
export NO_WERROR=1

View File

@@ -6,7 +6,10 @@
export LC_ALL=C.UTF-8
BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$DEPENDS_DIR/$HOST --bindir=$BASE_OUTDIR/bin --libdir=$BASE_OUTDIR/lib"
BITCOIN_CONFIG_ALL="--enable-suppress-external-warnings --disable-dependency-tracking --prefix=$DEPENDS_DIR/$HOST --bindir=$BASE_OUTDIR/bin --libdir=$BASE_OUTDIR/lib"
if [ -z "$NO_WERROR" ]; then
BITCOIN_CONFIG_ALL="${BITCOIN_CONFIG_ALL} --enable-werror"
fi
DOCKER_EXEC "ccache --zero-stats --max-size=$CCACHE_SIZE"
BEGIN_FOLD autogen

View File

@@ -1,10 +1,10 @@
AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 20)
define(_CLIENT_VERSION_REVISION, 99)
define(_CLIENT_VERSION_MINOR, 21)
define(_CLIENT_VERSION_REVISION, 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]])
@@ -646,16 +646,19 @@ case $host in
dnl It's safe to add these paths even if the functionality is disabled by
dnl the user (--without-wallet or --without-gui for example).
bdb_prefix=$($BREW --prefix berkeley-db4 2>/dev/null)
qt5_prefix=$($BREW --prefix qt5 2>/dev/null)
if test x$bdb_prefix != x && test "x$BDB_CFLAGS" = "x" && test "x$BDB_LIBS" = "x"; then
if test "x$use_bdb" != xno && $BREW list --versions berkeley-db4 >/dev/null && test "x$BDB_CFLAGS" = "x" && test "x$BDB_LIBS" = "x"; then
bdb_prefix=$($BREW --prefix berkeley-db4 2>/dev/null)
dnl This must precede the call to BITCOIN_FIND_BDB48 below.
BDB_CFLAGS="-I$bdb_prefix/include"
BDB_LIBS="-L$bdb_prefix/lib -ldb_cxx-4.8"
fi
if test x$qt5_prefix != x; then
PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH
if test "x$use_sqlite" != xno && $BREW list --versions sqlite3 >/dev/null; then
export PKG_CONFIG_PATH="$($BREW --prefix sqlite3 2>/dev/null)/lib/pkgconfig:$PKG_CONFIG_PATH"
fi
if $BREW list --versions qt5 >/dev/null; then
export PKG_CONFIG_PATH="$($BREW --prefix qt5 2>/dev/null)/lib/pkgconfig:$PKG_CONFIG_PATH"
fi
fi
else
@@ -863,7 +866,7 @@ fi
AC_CHECK_HEADERS([endian.h sys/endian.h byteswap.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h sys/sysctl.h vm/vm_param.h sys/vmmeter.h sys/resources.h])
AC_CHECK_DECLS([getifaddrs, freeifaddrs],,,
AC_CHECK_DECLS([getifaddrs, freeifaddrs],[CHECK_SOCKET],,
[#include <sys/types.h>
#include <ifaddrs.h>]
)

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

@@ -138,8 +138,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

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

@@ -4,5 +4,5 @@ Utilities to generate test vectors for the data-driven Bitcoin tests.
Usage:
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py valid 50 > ../../src/test/data/key_io_valid.json
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py invalid 50 > ../../src/test/data/key_io_invalid.json
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py valid 70 > ../../src/test/data/key_io_valid.json
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py invalid 70 > ../../src/test/data/key_io_invalid.json

View File

@@ -3,11 +3,11 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''
Generate valid and invalid base58 address and private key test vectors.
Generate valid and invalid base58/bech32(m) address and private key test vectors.
Usage:
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py valid 50 > ../../src/test/data/key_io_valid.json
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py invalid 50 > ../../src/test/data/key_io_invalid.json
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py valid 70 > ../../src/test/data/key_io_valid.json
PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py invalid 70 > ../../src/test/data/key_io_invalid.json
'''
# 2012 Wladimir J. van der Laan
# Released under MIT License
@@ -15,7 +15,7 @@ import os
from itertools import islice
from base58 import b58encode_chk, b58decode_chk, b58chars
import random
from segwit_addr import bech32_encode, decode_segwit_address, convertbits, CHARSET
from segwit_addr import bech32_encode, decode_segwit_address, convertbits, CHARSET, Encoding
# key types
PUBKEY_ADDRESS = 0
@@ -32,6 +32,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
@@ -44,6 +45,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
@@ -54,40 +56,58 @@ templates = [
((SCRIPT_ADDRESS,), 20, (), (False, 'main', None, None), script_prefix, script_suffix),
((PUBKEY_ADDRESS_TEST,), 20, (), (False, 'test', None, None), pubkey_prefix, pubkey_suffix),
((SCRIPT_ADDRESS_TEST,), 20, (), (False, 'test', None, None), script_prefix, script_suffix),
((PUBKEY_ADDRESS_TEST,), 20, (), (False, 'signet', None, None), pubkey_prefix, pubkey_suffix),
((SCRIPT_ADDRESS_TEST,), 20, (), (False, 'signet', None, None), script_prefix, script_suffix),
((PUBKEY_ADDRESS_REGTEST,), 20, (), (False, 'regtest', None, None), pubkey_prefix, pubkey_suffix),
((SCRIPT_ADDRESS_REGTEST,), 20, (), (False, 'regtest', None, None), script_prefix, script_suffix),
((PRIVKEY,), 32, (), (True, 'main', False, None), (), ()),
((PRIVKEY,), 32, (1,), (True, 'main', True, None), (), ()),
((PRIVKEY_TEST,), 32, (), (True, 'test', False, None), (), ()),
((PRIVKEY_TEST,), 32, (1,), (True, 'test', True, None), (), ()),
((PRIVKEY_TEST,), 32, (), (True, 'signet', False, None), (), ()),
((PRIVKEY_TEST,), 32, (1,), (True, 'signet', True, None), (), ()),
((PRIVKEY_REGTEST,), 32, (), (True, 'regtest', False, None), (), ()),
((PRIVKEY_REGTEST,), 32, (1,), (True, 'regtest', True, None), (), ())
]
# 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)),
('tb', 0, 20, (False, 'signet', None, True), Encoding.BECH32, p2wpkh_prefix),
('tb', 0, 32, (False, 'signet', None, True), Encoding.BECH32, p2wsh_prefix),
('tb', 1, 32, (False, 'signet', None, True), Encoding.BECH32M, p2tr_prefix),
('tb', 3, 32, (False, 'signet', None, True), Encoding.BECH32M, (OP_3, 32)),
('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):
@@ -127,8 +147,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():
@@ -186,22 +207,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

@@ -1,6 +1,6 @@
package=boost
$(package)_version=1_70_0
$(package)_download_path=https://dl.bintray.com/boostorg/release/1.70.0/source/
$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/
$(package)_file_name=boost_$($(package)_version).tar.bz2
$(package)_sha256_hash=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
$(package)_patches=unused_var_in_process.patch

View File

@@ -1,6 +1,6 @@
PACKAGE=qt
$(package)_version=5.9.8
$(package)_download_path=https://download.qt.io/official_releases/qt/5.9/$($(package)_version)/submodules
$(package)_download_path=https://download.qt.io/archive/qt/5.9/$($(package)_version)/submodules
$(package)_suffix=opensource-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=9b9dec1f67df1f94bce2955c5604de992d529dde72050239154c56352da0907d
@@ -12,6 +12,7 @@ $(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch
$(package)_patches+= fix_rcc_determinism.patch fix_riscv64_arch.patch xkb-default.patch no-xlib.patch
$(package)_patches+= fix_android_qmake_conf.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
$(package)_patches+= freetype_back_compat.patch drop_lrelease_dependency.patch fix_powerpc_libpng.patch
$(package)_patches+= fix_qpainter_non_determinism.patch
# Update OSX_QT_TRANSLATIONS when this is updated
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
@@ -195,6 +196,7 @@ endef
define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/freetype_back_compat.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_powerpc_libpng.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_qpainter_non_determinism.patch &&\
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
patch -p1 -i $($(package)_patch_dir)/drop_lrelease_dependency.patch && \
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch &&\

View File

@@ -0,0 +1,63 @@
commit 2a8f7dc6ddfc414a66491522501c1574a1343ee1
Author: Andrew Chow <achow101-github@achow101.com>
Date: Sat Nov 21 01:11:04 2020 -0500
build: Fix determinism issue when building with Clang 8
When building Qt with LLVM/Clang 8 under -O3 (the default), we run into
a determinism issue in `qt_interset_spans`. The issue has been fixed for
LLVM/Clang 9, see
https://github.com/llvm/llvm-project/commit/db101864bdc938deb1d63fe4f7da761bd38e5cae
and https://reviews.llvm.org/D64601, however this fix was not backported
to 8.x. Once LLVM/Clang 9 is used, this patch can be dropped.
The particular issue appears to be an optimization done by -O3 which
adds a temporary variable for `spans->y` in `qt_intersect_spans`. When
it does this, sometimes it chooses to use a 32-bit movs instruction
(movswl), and other times it chooses a 64-bit movs instruction (movswq).
By patching `qt_intersect_spans` to always make a temporary variable for
`spans->y`, we are able to sidestep this problem.
diff --git a/qtbase/src/gui/painting/qpaintengine_raster.cpp b/qtbase/src/gui/painting/qpaintengine_raster.cpp
index 92ab6e8375..f018009e0b 100644
--- a/qtbase/src/gui/painting/qpaintengine_raster.cpp
+++ b/qtbase/src/gui/painting/qpaintengine_raster.cpp
@@ -3971,22 +3971,23 @@ static const QSpan *qt_intersect_spans(const QClipData *clip, int *currentClip,
const QSpan *clipEnd = clip->m_spans + clip->count;
while (available && spans < end ) {
+ const short spans_y = spans->y;
if (clipSpans >= clipEnd) {
spans = end;
break;
}
- if (clipSpans->y > spans->y) {
+ if (clipSpans->y > spans_y) {
++spans;
continue;
}
- if (spans->y != clipSpans->y) {
- if (spans->y < clip->count && clip->m_clipLines[spans->y].spans)
- clipSpans = clip->m_clipLines[spans->y].spans;
+ if (spans_y != clipSpans->y) {
+ if (spans_y < clip->count && clip->m_clipLines[spans_y].spans)
+ clipSpans = clip->m_clipLines[spans_y].spans;
else
++clipSpans;
continue;
}
- Q_ASSERT(spans->y == clipSpans->y);
+ Q_ASSERT(spans_y == clipSpans->y);
int sx1 = spans->x;
int sx2 = sx1 + spans->len;
@@ -4005,7 +4006,7 @@ static const QSpan *qt_intersect_spans(const QClipData *clip, int *currentClip,
if (len) {
out->x = qMax(sx1, cx1);
out->len = qMin(sx2, cx2) - out->x;
- out->y = spans->y;
+ out->y = spans_y;
out->coverage = qt_div_255(spans->coverage * clipSpans->coverage);
++out;
--available;

View File

@@ -127,3 +127,14 @@ However, the wallet may not be up-to-date with the current state of the mempool
or the state of the mempool by an RPC that returned before this RPC. For
example, a wallet transaction that was BIP-125-replaced in the mempool prior to
this RPC may not yet be reflected as such in this RPC response.
## Limitations
There is a known issue in the JSON-RPC interface that can cause a node to crash if
too many http connections are being opened at the same time because the system runs
out of available file descriptors. To prevent this from happening you might
want to increase the number of maximum allowed file descriptors in your system
and try to prevent opening too many connections to your JSON-RPC interface at the
same time if this is under your control. It is hard to give general advice
since this depends on your system but if you make several hundred requests at
once you are definitely at risk of encountering this issue.

View File

@@ -12,6 +12,18 @@ REST Interface consistency guarantees
The [same guarantees as for the RPC Interface](/doc/JSON-RPC-interface.md#rpc-consistency-guarantees)
apply.
Limitations
-----------
There is a known issue in the REST interface that can cause a node to crash if
too many http connections are being opened at the same time because the system runs
out of available file descriptors. To prevent this from happening you might
want to increase the number of maximum allowed file descriptors in your system
and try to prevent opening too many connections to your rest interface at the
same time if this is under your control. It is hard to give general advice
since this depends on your system but if you make several hundred requests at
once you are definitely at risk of encountering this issue.
Supported API
-------------

View File

@@ -1,4 +1,4 @@
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.21.0**):
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.21.1**):
* [`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)).
@@ -46,3 +46,4 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.21.0**):
* [`BIP 325`](https://github.com/bitcoin/bips/blob/master/bip-0325.mediawiki): Signet test network is supported as of **v0.21.0** ([PR 18267](https://github.com/bitcoin/bitcoin/pull/18267)).
* [`BIP 339`](https://github.com/bitcoin/bips/blob/master/bip-0339.mediawiki): Relay of transactions by wtxid is supported as of **v0.21.0** ([PR 18044](https://github.com/bitcoin/bitcoin/pull/18044)).
* [`BIP 340`](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) [`341`](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki) [`342`](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki): Validation rules for Taproot (including Schnorr signatures and Tapscript leaves) are implemented as of **v0.21.0** ([PR 19953](https://github.com/bitcoin/bitcoin/pull/19953)), without mainnet activation.
* [`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.21.1** ([PR 20861](https://github.com/bitcoin/bitcoin/pull/20861)).

View File

@@ -27,7 +27,7 @@ Comments may appear in two ways:
### Network specific options
Network specific options can be:
- placed into sections with headers `[main]` (not `[mainnet]`), `[test]` (not `[testnet]`) or `[regtest]`;
- placed into sections with headers `[main]` (not `[mainnet]`), `[test]` (not `[testnet]`), `[signet]` or `[regtest]`;
- prefixed with a chain name; e.g., `regtest.maxmempool=100`.
Network specific options take precedence over non-network specific options.

View File

@@ -19,7 +19,7 @@ Then install [Homebrew](https://brew.sh).
## Dependencies
```shell
brew install automake berkeley-db4 libtool boost miniupnpc pkg-config python qt libevent qrencode sqlite
brew install automake libtool boost miniupnpc pkg-config python qt libevent qrencode
```
If you run into issues, check [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting).
@@ -30,7 +30,22 @@ If you want to build the disk image with `make deploy` (.dmg / optional), you ne
brew install librsvg
```
## Berkeley DB
The wallet support requires one or both of the dependencies ([*SQLite*](#sqlite) and [*Berkeley DB*](#berkeley-db)) in the sections below.
To build Bitcoin Core without wallet, see [*Disable-wallet mode*](#disable-wallet-mode).
#### SQLite
Usually, macOS installation already has a suitable SQLite installation.
Also, the Homebrew package could be installed:
```shell
brew install sqlite
```
In that case the Homebrew package will prevail.
#### Berkeley DB
It is recommended to use Berkeley DB 4.8. If you have to build it yourself,
you can use [this](/contrib/install_db4.sh) script to install it
like so:
@@ -41,7 +56,11 @@ like so:
from the root of the repository.
**Note**: You only need Berkeley DB if the wallet is enabled (see [*Disable-wallet mode*](/doc/build-osx.md#disable-wallet-mode)).
Also, the Homebrew package could be installed:
```shell
brew install berkeley-db4
```
## Build Bitcoin Core
@@ -72,14 +91,14 @@ from the root of the repository.
make deploy
```
## `disable-wallet` mode
## Disable-wallet mode
When the intention is to run only a P2P node without a wallet, Bitcoin Core may be
compiled in `disable-wallet` mode with:
compiled in disable-wallet mode with:
```shell
./configure --disable-wallet
```
In this case there is no dependency on Berkeley DB 4.8 and SQLite.
In this case there is no dependency on [*Berkeley DB*](#berkeley-db) and [*SQLite*](#sqlite).
Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call.

View File

@@ -103,7 +103,7 @@ Build using:
cd depends
make HOST=x86_64-w64-mingw32
cd ..
./autogen.sh # not required when building from tarball
./autogen.sh
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
make
sudo bash -c "echo 1 > /proc/sys/fs/binfmt_misc/status" # Enable WSL support for Win32 applications.

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" "August 2021" "bitcoin-cli v0.21.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.21.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.21.2.0
.SH OPTIONS
.HP
\-?
@@ -31,6 +31,15 @@ location. (default: bitcoin.conf)
.IP
Specify data directory
.HP
\fB\-generate\fR
.IP
Generate blocks immediately, equivalent to RPC generatenewaddress
followed by RPC generatetoaddress. Optional positional integer
arguments are number of blocks to generate (default: 1) and
maximum iterations to try (default: 1000000), equivalent to RPC
generatetoaddress nblocks and maxtries arguments. Example:
bitcoin\-cli \fB\-generate\fR 4 1000
.HP
\fB\-getinfo\fR
.IP
Get general information from the remote server. Note that unlike
@@ -43,6 +52,12 @@ be as of a different block from the chain state reported)
.IP
Pass named instead of positional arguments (default: false)
.HP
\fB\-netinfo\fR
.IP
Get network peer connection information from the remote server. An
optional integer argument from 0 to 4 can be passed for different
peers listings (default: 0).
.HP
\fB\-rpcclienttimeout=\fR<n>
.IP
Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
@@ -63,8 +78,8 @@ Password for JSON\-RPC connections
.HP
\fB\-rpcport=\fR<port>
.IP
Connect to JSON\-RPC on <port> (default: 8332, testnet: 18332, regtest:
18443)
Connect to JSON\-RPC on <port> (default: 8332, testnet: 18332, signet:
38332, regtest: 18443)
.HP
\fB\-rpcuser=\fR<user>
.IP
@@ -92,22 +107,55 @@ is used for the RPC password.
.IP
Read RPC password from standard input as a single line. When combined
with \fB\-stdin\fR, the first line from standard input is used for the
RPC password.
RPC password. When combined with \fB\-stdinwalletpassphrase\fR,
\fB\-stdinrpcpass\fR consumes the first line, and \fB\-stdinwalletpassphrase\fR
consumes the second.
.HP
\fB\-stdinwalletpassphrase\fR
.IP
Read wallet passphrase from standard input as a single line. When
combined with \fB\-stdin\fR, the first line from standard input is used
for the wallet passphrase.
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

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" "August 2021" "bitcoin-qt v0.21.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.21.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.21.2.0
.SH OPTIONS
.HP
\-?
@@ -23,9 +23,17 @@ long fork (%s in cmd is replaced by message)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
0000000000000000000b9d2ec5a352ecba0592946514a92f14319dc2b367fc72,
testnet:
0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
000000000000006433d1efec504c53ca332b64963c425395515b01977bd7b3b0,
signet:
0000002a1de0f46379358c1fd09906f7ac59adf3712323ed90eb59e4c183c020)
.HP
\fB\-blockfilterindex=\fR<type>
.IP
Maintain an index of compact filters by block (default: 0, values:
basic). If <type> is not supplied or if <type> = 1, indexes for
all known types are enabled.
.HP
\fB\-blocknotify=\fR<cmd>
.IP
@@ -39,12 +47,20 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-blocksdir=\fR<dir>
.IP
Specify blocks directory (default: <datadir>/blocks)
Specify directory to hold blocks subdirectory for *.dat files (default:
<datadir>)
.HP
\fB\-blocksonly\fR
.IP
Whether to reject transactions from network peers. Automatic broadcast
and rebroadcast of any transactions from inbound peers is
disabled, unless the peer has the 'forcerelay' permission. RPC
transactions are not affected. (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
Specify configuration file. Relative paths will be prefixed by datadir
location. (default: bitcoin.conf)
Specify path to read\-only configuration file. Relative paths will be
prefixed by datadir location. (default: bitcoin.conf)
.HP
\fB\-daemon\fR
.IP
@@ -56,7 +72,9 @@ Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
Set database cache size in MiB (4 to 16384, default: 450)
Maximum database cache size <n> MiB (4 to 16384, default: 450). In
addition, unused mempool memory is shared for this cache (see
\fB\-maxmempool\fR).
.HP
\fB\-debuglogfile=\fR<file>
.IP
@@ -71,7 +89,7 @@ Specify additional configuration file, relative to the \fB\-datadir\fR path
.HP
\fB\-loadblock=\fR<file>
.IP
Imports blocks from external blk000??.dat file on startup
Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
@@ -88,7 +106,7 @@ Do not keep transactions in the mempool longer than <n> hours (default:
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
@@ -122,6 +140,18 @@ Rebuild chain state from the currently indexed blocks. When in pruning
mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
instead.
.HP
\fB\-settings=\fR<file>
.IP
Specify path to dynamic settings data file. Can be disabled with
\fB\-nosettings\fR. File is written at runtime and not meant to be
edited by users (use bitcoin.conf instead for custom settings).
Relative paths will be prefixed by datadir location. (default:
settings.json)
.HP
\fB\-startupnotify=\fR<cmd>
.IP
Execute command on startup.
.HP
\fB\-sysperms\fR
.IP
Create new files with system default permissions, instead of umask 077
@@ -144,19 +174,24 @@ Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info). This option can be
specified multiple times to add multiple nodes.
.HP
\fB\-banscore=\fR<n>
\fB\-asmap=\fR<file>
.IP
Threshold for disconnecting misbehaving peers (default: 100)
Specify asn mapping used for bucketing of the peers (default:
ip_asn.map). Relative paths will be prefixed by the net\-specific
datadir location.
.HP
\fB\-bantime=\fR<n>
.IP
Number of seconds to keep misbehaving peers from reconnecting (default:
Default duration (in seconds) of manually configured bans (default:
86400)
.HP
\fB\-bind=\fR<addr>
\fB\-bind=\fR<addr>[:<port>][=onion]
.IP
Bind to given address and always listen on it. Use [host]:port notation
for IPv6
Bind to given address and always listen on it (default: 0.0.0.0). Use
[host]:port notation for IPv6. Append =onion to tag any incoming
connections to that address and port as incoming Tor connections
(default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
.HP
\fB\-connect=\fR<ip>
.IP
@@ -193,7 +228,7 @@ Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\
.HP
\fB\-listenonion\fR
.IP
Automatically create Tor hidden service (default: 1)
Automatically create Tor onion service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
@@ -215,12 +250,18 @@ amount. (default: 4200 seconds)
.HP
\fB\-maxuploadtarget=\fR<n>
.IP
Tries to keep outbound traffic under the given target (in MiB per 24h),
0 = no limit (default: 0)
Tries to keep outbound traffic under the given target (in MiB per 24h).
Limit does not apply to peers with 'download' permission. 0 = no
limit (default: 0)
.HP
\fB\-networkactive\fR
.IP
Enable all P2P network activity (default: 1). Can be changed by the
setnetworkactive RPC command
.HP
\fB\-onion=\fR<ip:port>
.IP
Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
Use separate SOCKS5 proxy to reach peers via Tor onion services, set
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
.HP
\fB\-onlynet=\fR<net>
@@ -230,10 +271,14 @@ onion). Incoming connections are not affected by this option.
This option can be specified multiple times to allow multiple
networks.
.HP
\fB\-peerblockfilters\fR
.IP
Serve compact block filters to peers per BIP 157 (default: 0)
.HP
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
1)
0)
.HP
\fB\-permitbaremultisig\fR
.IP
@@ -241,8 +286,9 @@ Relay non\-P2SH multisig (default: 1)
.HP
\fB\-port=\fR<port>
.IP
Listen for connections on <port> (default: 8333, testnet: 18333,
regtest: 18444)
Listen for connections on <port>. Nodes not using the default ports
(default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
are unlikely to get incoming connections.
.HP
\fB\-proxy=\fR<ip:port>
.IP
@@ -277,25 +323,35 @@ 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
Bind to the given address and add permission flags to the peers
connecting to it. Use [host]:port notation for IPv6. Allowed
permissions: bloomfilter (allow requesting BIP37 filtered blocks
and transactions), noban (do not ban for misbehavior; implies
download), forcerelay (relay transactions that are already in the
mempool; implies relay), relay (relay even in \fB\-blocksonly\fR mode,
and unlimited transaction announcements), mempool (allow
requesting BIP35 mempool contents), download (allow getheaders
during IBD, no disconnect after maxuploadtarget limit), addr
(responses to GETADDR avoid hitting the cache and contain random
records with the most up\-to\-date info). Specify multiple
permissions separated by commas (default:
download,noban,mempool,relay). Can be specified multiple times.
.HP
\fB\-whitelist=\fR<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
Add permission flags to the peers connecting from the given IP address
(e.g. 1.2.3.4) or CIDR\-notated network (e.g. 1.2.3.0/24). Uses
the same permissions as \fB\-whitebind\fR. Can be specified multiple
times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
@@ -303,7 +359,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 +384,20 @@ limited by the fee estimate for the longest target
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kB) that will be used when fee estimation has
insufficient data (default: 0.0002)
insufficient data. 0 to entirely disable the fallbackfee feature.
(default: 0.00)
.HP
\fB\-keypool=\fR<n>
.IP
Set key pool size to <n> (default: 1000)
Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
increase the risk of losing funds when restoring from an old
backup, if none of the addresses in the original keypool have
been used.
.HP
\fB\-maxapsfee=\fR<n>
.IP
Spend up to this amount in additional (absolute) fees (in BTC) if it
allows the use of partial spend avoidance (default: 0.00)
.HP
\fB\-mintxfee=\fR<amt>
.IP
@@ -346,10 +412,6 @@ Fee (in BTC/kB) to add to transactions you send (default: 0.00)
.IP
Rescan the block chain for missing wallet transactions on startup
.HP
\fB\-salvagewallet\fR
.IP
Attempt to recover private keys from a corrupt wallet on startup
.HP
\fB\-spendzeroconfchange\fR
.IP
Spend unconfirmed change when sending transactions (default: 1)
@@ -359,18 +421,15 @@ Spend unconfirmed change when sending transactions (default: 1)
If paytxfee is not set, include enough fee so transactions begin
confirmation on average within n blocks (default: 6)
.HP
\fB\-upgradewallet\fR
.IP
Upgrade wallet to latest format on startup
.HP
\fB\-wallet=\fR<path>
.IP
Specify wallet database path. Can be specified multiple times to load
multiple wallets. Path is interpreted relative to <walletdir> if
it is not absolute, and will be created if it does not exist (as
a directory containing a wallet.dat file and log files). For
backwards compatibility this will also accept names of existing
data files in <walletdir>.)
Specify wallet path to load at startup. Can be used multiple times to
load multiple wallets. Path is to a directory containing wallet
data and log files. If the path is not absolute, it is
interpreted relative to <walletdir>. This only loads existing
wallets and does not create new ones. For backwards compatibility
this also accepts names of existing top\-level data files in
<walletdir>.
.HP
\fB\-walletbroadcast\fR
.IP
@@ -383,18 +442,15 @@ exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
by TxID)
Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID and %w is replaced by wallet name. %w is not currently
implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used
to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
.HP
\fB\-zapwallettxes=\fR<mode>
.IP
Delete all wallet transactions and only recover those parts of the
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
payment request information, 2 = drop tx meta data)
.PP
ZeroMQ notification options:
.HP
@@ -402,17 +458,43 @@ ZeroMQ notification options:
.IP
Enable publish hash block in <address>
.HP
\fB\-zmqpubhashblockhwm=\fR<n>
.IP
Set publish hash block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
\fB\-zmqpubhashtxhwm=\fR<n>
.IP
Set publish hash transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
\fB\-zmqpubrawblockhwm=\fR<n>
.IP
Set publish raw block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
.HP
\fB\-zmqpubrawtxhwm=\fR<n>
.IP
Set publish raw transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubsequence=\fR<address>
.IP
Enable publish hash block and tx sequence in <address>
.HP
\fB\-zmqpubsequencehwm=\fR<n>
.IP
Set publish hash sequence message high water mark (default: 1000)
.PP
Debugging/Testing options:
.HP
@@ -421,9 +503,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 +521,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 +550,32 @@ Append comment to the user agent string
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
@@ -484,7 +593,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 +600,15 @@ mining and transaction creation (default: 0.00001)
.HP
\fB\-whitelistforcerelay\fR
.IP
Force relay of transactions from whitelisted peers even if they violate
local relay policy (default: 0)
Add 'forcerelay' permission to whitelisted inbound peers with default
permissions. This will relay transactions even if the
transactions were already in the mempool. (default: 0)
.HP
\fB\-whitelistrelay\fR
.IP
Accept relayed transactions received from whitelisted peers even when
not relaying transactions (default: 1)
Add 'relay' permission to whitelisted inbound peers with default
permissions. This will accept relayed transactions even when not
relaying transactions (default: 1)
.PP
Block creation options:
.HP
@@ -554,7 +664,7 @@ Password for JSON\-RPC connections
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
18332, regtest: 18443)
18332, signet: 38332, regtest: 18443)
.HP
\fB\-rpcserialversion\fR
.IP
@@ -569,6 +679,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 +718,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" "August 2021" "bitcoin-tx v0.21.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.21.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.21.2.0
.SH OPTIONS
.HP
\-?
@@ -28,11 +28,36 @@ Select JSON output
.IP
Output only the hex\-encoded transaction id of the resultant transaction.
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
@@ -105,10 +130,10 @@ set=NAME:JSON\-STRING
.IP
Set register NAME to given JSON\-STRING
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

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" "August 2021" "bitcoin-wallet v0.21.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.21.2.0
.SH DESCRIPTION
Bitcoin Core bitcoin\-wallet version v0.17.99.0
Bitcoin Core bitcoin\-wallet version v0.21.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,36 @@ Output debugging information (default: 0).
\fB\-printtoconsole\fR
.IP
Send trace/debug info to console (default: 1 when no \fB\-debug\fR is true, 0
otherwise.
otherwise).
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
@@ -51,11 +74,16 @@ Create new wallet file
info
.IP
Get wallet info
.IP
salvage
.IP
Attempt to recover private keys from a corrupt wallet. Warning:
\&'salvage' is experimental.
.SH COPYRIGHT
Copyright (C) 2009-2019 The Bitcoin Core developers
Copyright (C) 2009-2020 The Bitcoin Core developers
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org> for further information about the software.
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.

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" "August 2021" "bitcoind v0.21.2.0" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v0.17.99.0
bitcoind \- manual page for bitcoind v0.21.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.21.2.0
.SH OPTIONS
.HP
\-?
@@ -23,9 +23,17 @@ long fork (%s in cmd is replaced by message)
If this block is in the chain assume that it and its ancestors are valid
and potentially skip their script verification (0 to verify all,
default:
0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
0000000000000000000b9d2ec5a352ecba0592946514a92f14319dc2b367fc72,
testnet:
0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
000000000000006433d1efec504c53ca332b64963c425395515b01977bd7b3b0,
signet:
0000002a1de0f46379358c1fd09906f7ac59adf3712323ed90eb59e4c183c020)
.HP
\fB\-blockfilterindex=\fR<type>
.IP
Maintain an index of compact filters by block (default: 0, values:
basic). If <type> is not supplied or if <type> = 1, indexes for
all known types are enabled.
.HP
\fB\-blocknotify=\fR<cmd>
.IP
@@ -39,12 +47,20 @@ Extra transactions to keep in memory for compact block reconstructions
.HP
\fB\-blocksdir=\fR<dir>
.IP
Specify blocks directory (default: <datadir>/blocks)
Specify directory to hold blocks subdirectory for *.dat files (default:
<datadir>)
.HP
\fB\-blocksonly\fR
.IP
Whether to reject transactions from network peers. Automatic broadcast
and rebroadcast of any transactions from inbound peers is
disabled, unless the peer has the 'forcerelay' permission. RPC
transactions are not affected. (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
Specify configuration file. Relative paths will be prefixed by datadir
location. (default: bitcoin.conf)
Specify path to read\-only configuration file. Relative paths will be
prefixed by datadir location. (default: bitcoin.conf)
.HP
\fB\-daemon\fR
.IP
@@ -56,7 +72,9 @@ Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
Set database cache size in MiB (4 to 16384, default: 450)
Maximum database cache size <n> MiB (4 to 16384, default: 450). In
addition, unused mempool memory is shared for this cache (see
\fB\-maxmempool\fR).
.HP
\fB\-debuglogfile=\fR<file>
.IP
@@ -71,7 +89,7 @@ Specify additional configuration file, relative to the \fB\-datadir\fR path
.HP
\fB\-loadblock=\fR<file>
.IP
Imports blocks from external blk000??.dat file on startup
Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
@@ -88,7 +106,7 @@ Do not keep transactions in the mempool longer than <n> hours (default:
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-6\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
@@ -122,6 +140,18 @@ Rebuild chain state from the currently indexed blocks. When in pruning
mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
instead.
.HP
\fB\-settings=\fR<file>
.IP
Specify path to dynamic settings data file. Can be disabled with
\fB\-nosettings\fR. File is written at runtime and not meant to be
edited by users (use bitcoin.conf instead for custom settings).
Relative paths will be prefixed by datadir location. (default:
settings.json)
.HP
\fB\-startupnotify=\fR<cmd>
.IP
Execute command on startup.
.HP
\fB\-sysperms\fR
.IP
Create new files with system default permissions, instead of umask 077
@@ -144,19 +174,24 @@ Add a node to connect to and attempt to keep the connection open (see
the `addnode` RPC command help for more info). This option can be
specified multiple times to add multiple nodes.
.HP
\fB\-banscore=\fR<n>
\fB\-asmap=\fR<file>
.IP
Threshold for disconnecting misbehaving peers (default: 100)
Specify asn mapping used for bucketing of the peers (default:
ip_asn.map). Relative paths will be prefixed by the net\-specific
datadir location.
.HP
\fB\-bantime=\fR<n>
.IP
Number of seconds to keep misbehaving peers from reconnecting (default:
Default duration (in seconds) of manually configured bans (default:
86400)
.HP
\fB\-bind=\fR<addr>
\fB\-bind=\fR<addr>[:<port>][=onion]
.IP
Bind to given address and always listen on it. Use [host]:port notation
for IPv6
Bind to given address and always listen on it (default: 0.0.0.0). Use
[host]:port notation for IPv6. Append =onion to tag any incoming
connections to that address and port as incoming Tor connections
(default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
.HP
\fB\-connect=\fR<ip>
.IP
@@ -193,7 +228,7 @@ Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\
.HP
\fB\-listenonion\fR
.IP
Automatically create Tor hidden service (default: 1)
Automatically create Tor onion service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
@@ -215,12 +250,18 @@ amount. (default: 4200 seconds)
.HP
\fB\-maxuploadtarget=\fR<n>
.IP
Tries to keep outbound traffic under the given target (in MiB per 24h),
0 = no limit (default: 0)
Tries to keep outbound traffic under the given target (in MiB per 24h).
Limit does not apply to peers with 'download' permission. 0 = no
limit (default: 0)
.HP
\fB\-networkactive\fR
.IP
Enable all P2P network activity (default: 1). Can be changed by the
setnetworkactive RPC command
.HP
\fB\-onion=\fR<ip:port>
.IP
Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
Use separate SOCKS5 proxy to reach peers via Tor onion services, set
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
.HP
\fB\-onlynet=\fR<net>
@@ -230,10 +271,14 @@ onion). Incoming connections are not affected by this option.
This option can be specified multiple times to allow multiple
networks.
.HP
\fB\-peerblockfilters\fR
.IP
Serve compact block filters to peers per BIP 157 (default: 0)
.HP
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
1)
0)
.HP
\fB\-permitbaremultisig\fR
.IP
@@ -241,8 +286,9 @@ Relay non\-P2SH multisig (default: 1)
.HP
\fB\-port=\fR<port>
.IP
Listen for connections on <port> (default: 8333, testnet: 18333,
regtest: 18444)
Listen for connections on <port>. Nodes not using the default ports
(default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
are unlikely to get incoming connections.
.HP
\fB\-proxy=\fR<ip:port>
.IP
@@ -277,25 +323,35 @@ 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
Bind to the given address and add permission flags to the peers
connecting to it. Use [host]:port notation for IPv6. Allowed
permissions: bloomfilter (allow requesting BIP37 filtered blocks
and transactions), noban (do not ban for misbehavior; implies
download), forcerelay (relay transactions that are already in the
mempool; implies relay), relay (relay even in \fB\-blocksonly\fR mode,
and unlimited transaction announcements), mempool (allow
requesting BIP35 mempool contents), download (allow getheaders
during IBD, no disconnect after maxuploadtarget limit), addr
(responses to GETADDR avoid hitting the cache and contain random
records with the most up\-to\-date info). Specify multiple
permissions separated by commas (default:
download,noban,mempool,relay). Can be specified multiple times.
.HP
\fB\-whitelist=\fR<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
Add permission flags to the peers connecting from the given IP address
(e.g. 1.2.3.4) or CIDR\-notated network (e.g. 1.2.3.0/24). Uses
the same permissions as \fB\-whitebind\fR. Can be specified multiple
times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
default: "p2sh\-segwit")
default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
@@ -303,7 +359,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 +384,20 @@ limited by the fee estimate for the longest target
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kB) that will be used when fee estimation has
insufficient data (default: 0.0002)
insufficient data. 0 to entirely disable the fallbackfee feature.
(default: 0.00)
.HP
\fB\-keypool=\fR<n>
.IP
Set key pool size to <n> (default: 1000)
Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
increase the risk of losing funds when restoring from an old
backup, if none of the addresses in the original keypool have
been used.
.HP
\fB\-maxapsfee=\fR<n>
.IP
Spend up to this amount in additional (absolute) fees (in BTC) if it
allows the use of partial spend avoidance (default: 0.00)
.HP
\fB\-mintxfee=\fR<amt>
.IP
@@ -346,10 +412,6 @@ Fee (in BTC/kB) to add to transactions you send (default: 0.00)
.IP
Rescan the block chain for missing wallet transactions on startup
.HP
\fB\-salvagewallet\fR
.IP
Attempt to recover private keys from a corrupt wallet on startup
.HP
\fB\-spendzeroconfchange\fR
.IP
Spend unconfirmed change when sending transactions (default: 1)
@@ -359,18 +421,15 @@ Spend unconfirmed change when sending transactions (default: 1)
If paytxfee is not set, include enough fee so transactions begin
confirmation on average within n blocks (default: 6)
.HP
\fB\-upgradewallet\fR
.IP
Upgrade wallet to latest format on startup
.HP
\fB\-wallet=\fR<path>
.IP
Specify wallet database path. Can be specified multiple times to load
multiple wallets. Path is interpreted relative to <walletdir> if
it is not absolute, and will be created if it does not exist (as
a directory containing a wallet.dat file and log files). For
backwards compatibility this will also accept names of existing
data files in <walletdir>.)
Specify wallet path to load at startup. Can be used multiple times to
load multiple wallets. Path is to a directory containing wallet
data and log files. If the path is not absolute, it is
interpreted relative to <walletdir>. This only loads existing
wallets and does not create new ones. For backwards compatibility
this also accepts names of existing top\-level data files in
<walletdir>.
.HP
\fB\-walletbroadcast\fR
.IP
@@ -383,18 +442,15 @@ exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes (%s in cmd is replaced
by TxID)
Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID and %w is replaced by wallet name. %w is not currently
implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used
to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
.HP
\fB\-zapwallettxes=\fR<mode>
.IP
Delete all wallet transactions and only recover those parts of the
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
payment request information, 2 = drop tx meta data)
.PP
ZeroMQ notification options:
.HP
@@ -402,17 +458,43 @@ ZeroMQ notification options:
.IP
Enable publish hash block in <address>
.HP
\fB\-zmqpubhashblockhwm=\fR<n>
.IP
Set publish hash block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
\fB\-zmqpubhashtxhwm=\fR<n>
.IP
Set publish hash transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
\fB\-zmqpubrawblockhwm=\fR<n>
.IP
Set publish raw block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
.HP
\fB\-zmqpubrawtxhwm=\fR<n>
.IP
Set publish raw transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubsequence=\fR<address>
.IP
Enable publish hash block and tx sequence in <address>
.HP
\fB\-zmqpubsequencehwm=\fR<n>
.IP
Set publish hash sequence message high water mark (default: 1000)
.PP
Debugging/Testing options:
.HP
@@ -421,9 +503,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 +521,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 +550,32 @@ Append comment to the user agent string
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
@@ -491,13 +600,15 @@ mining and transaction creation (default: 0.00001)
.HP
\fB\-whitelistforcerelay\fR
.IP
Force relay of transactions from whitelisted peers even if they violate
local relay policy (default: 0)
Add 'forcerelay' permission to whitelisted inbound peers with default
permissions. This will relay transactions even if the
transactions were already in the mempool. (default: 0)
.HP
\fB\-whitelistrelay\fR
.IP
Accept relayed transactions received from whitelisted peers even when
not relaying transactions (default: 1)
Add 'relay' permission to whitelisted inbound peers with default
permissions. This will accept relayed transactions even when not
relaying transactions (default: 1)
.PP
Block creation options:
.HP
@@ -553,7 +664,7 @@ Password for JSON\-RPC connections
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
18332, regtest: 18443)
18332, signet: 38332, regtest: 18443)
.HP
\fB\-rpcserialversion\fR
.IP
@@ -568,14 +679,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

@@ -1,25 +1,11 @@
*After branching off for a major version release of Bitcoin Core, use this
template to create the initial release notes draft.*
0.21.2 Release Notes
====================
*The release notes draft is a temporary file that can be added to by anyone. See
[/doc/developer-notes.md#release-notes](/doc/developer-notes.md#release-notes)
for the process.*
Bitcoin Core version 0.21.2 is now available from:
*Create the draft, named* "*version* Release Notes Draft"
*(e.g. "0.20.0 Release Notes Draft"), as a collaborative wiki in:*
<https://bitcoincore.org/bin/bitcoin-core-0.21.2/>
https://github.com/bitcoin-core/bitcoin-devwiki/wiki/
*Before the final release, move the notes back to this git repository.*
*version* Release Notes Draft
===============================
Bitcoin Core version *version* is now available from:
<https://bitcoincore.org/bin/bitcoin-core-*version*/>
This release includes new features, various bug fixes and performance
This minor release includes various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
@@ -45,11 +31,6 @@ wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
During this release cycle, work has been done to ensure that the codebase is fully
compatible with C++17. The intention is to begin using C++17 features starting
with the 0.22.0 release. This means that a compiler that supports C++17 will be
required to compile 0.22.0.
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
@@ -60,427 +41,69 @@ 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.
The node's known peers are persisted to disk in a file called `peers.dat`. The
format of this file has been changed in a backwards-incompatible way in order to
accommodate the storage of Tor v3 and other BIP155 addresses. This means that if
the file is modified by 0.21.0 or newer then older versions will not be able to
read it. Those old versions, in the event of a downgrade, will log an error
message "Incorrect keysize in addrman deserialization" and will continue normal
operation as if the file was missing, creating a new empty one. (#19954)
Notable changes
===============
P2P and network changes
-----------------------
- The mempool now tracks whether transactions submitted via the wallet or RPCs
have been successfully broadcast. Every 10-15 minutes, the node will try to
announce unbroadcast transactions until a peer requests it via a `getdata`
message or the transaction is removed from the mempool for other reasons.
The node will not track the broadcast status of transactions submitted to the
node using P2P relay. This version reduces the initial broadcast guarantees
for wallet transactions submitted via P2P to a node running the wallet. (#18038)
- The size of the set of transactions that peers have announced and we consider
for requests has been reduced from 100000 to 5000 (per peer), and further
announcements will be ignored when that limit is reached. If you need to dump
(very) large batches of transactions, exceptions can be made for trusted
peers using the "relay" network permission. For localhost for example it can
be enabled using the command line option `-whitelist=relay@127.0.0.1`.
(#19988)
- The Tor onion service that is automatically created by setting the
`-listenonion` configuration parameter will now be created as a Tor v3 service
instead of Tor v2. The private key that was used for Tor v2 (if any) will be
left untouched in the `onion_private_key` file in the data directory (see
`-datadir`) and can be removed if not needed. Bitcoin Core will no longer
attempt to read it. The private key for the Tor v3 service will be saved in a
file named `onion_v3_private_key`. To use the deprecated Tor v2 service (not
recommended), then `onion_private_key` can be copied over
`onion_v3_private_key`, e.g.
`cp -f onion_private_key onion_v3_private_key`. (#19954)
Updated RPCs
------------
- The `getpeerinfo` RPC now has additional `last_block` and `last_transaction`
fields that return the UNIX epoch time of the last block and the last valid
transaction received from each peer. (#19731)
- `getnetworkinfo` now returns two new fields, `connections_in` and
`connections_out`, that provide the number of inbound and outbound peer
connections. These new fields are in addition to the existing `connections`
field, which returns the total number of peer connections. (#19405)
- Exposed transaction version numbers are now treated as unsigned 32-bit
integers instead of signed 32-bit integers. This matches their treatment in
consensus logic. Versions greater than 2 continue to be non-standard
(matching previous behavior of smaller than 1 or greater than 2 being
non-standard). Note that this includes the joinpsbt command, which combines
partially-signed transactions by selecting the highest version number.
(#16525)
- `getmempoolinfo` now returns an additional `unbroadcastcount` field. The
mempool tracks locally submitted transactions until their initial broadcast
is acknowledged by a peer. This field returns the count of transactions
waiting for acknowledgement.
- Mempool RPCs such as `getmempoolentry` and `getrawmempool` with
`verbose=true` now return an additional `unbroadcast` field. This indicates
whether initial broadcast of the transaction has been acknowledged by a
peer. `getmempoolancestors` and `getmempooldescendants` are also updated.
- The `bumpfee`, `fundrawtransaction`, `sendmany`, `sendtoaddress`, and `walletcreatefundedpsbt`
RPC commands have been updated to include two new fee estimation methods "BTC/kB" and "sat/B".
The target is the fee expressed explicitly in the given form. Note that use of this feature
will trigger BIP 125 (replace-by-fee) opt-in. (#11413)
- In addition, the `estimate_mode` parameter is now case insensitive for all of
the above RPC commands. (#11413)
- The `bumpfee` command now uses `conf_target` rather than `confTarget` in the
options. (#11413)
- The `getpeerinfo` RPC no longer returns the `banscore` field unless the configuration
option `-deprecatedrpc=banscore` is used. The `banscore` field will be fully
removed in the next major release. (#19469)
- The `testmempoolaccept` RPC returns `vsize` and a `fees` object with the `base` fee
if the transaction would pass validation. (#19940)
- The `getpeerinfo` RPC now returns a `connection_type` field. This indicates
the type of connection established with the peer. It will return one of six
options. For more information, see the `getpeerinfo` help documentation.
(#19725)
- The `getpeerinfo` RPC no longer returns the `addnode` field by default. This
field will be fully removed in the next major release. It can be accessed
with the configuration option `-deprecatedrpc=getpeerinfo_addnode`. However,
it is recommended to instead use the `connection_type` field (it will return
`manual` when addnode is true). (#19725)
- The `walletcreatefundedpsbt` RPC call will now fail with
`Insufficient funds` when inputs are manually selected but are not enough to cover
the outputs and fee. Additional inputs can automatically be added through the
new `add_inputs` option. (#16377)
- The `fundrawtransaction` RPC now supports `add_inputs` option that when `false`
prevents adding more inputs if necessary and consequently the RPC fails.
Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.
New RPCs
--------
- The `getindexinfo` RPC returns the actively running indices of the node,
including their current sync status and height. It also accepts an `index_name`
to specify returning only the status of that index. (#19550)
Build System
------------
Updated settings
----------------
- The same ZeroMQ notification (e.g. `-zmqpubhashtx=address`) can now be
specified multiple times to publish the same notification to different ZeroMQ
sockets. (#18309)
- The `-banscore` configuration option, which modified the default threshold for
disconnecting and discouraging misbehaving peers, has been removed as part of
changes in 0.20.1 and in this release to the handling of misbehaving peers.
Refer to "Changes regarding misbehaving peers" in the 0.20.1 release notes for
details. (#19464)
- The `-debug=db` logging category, which was deprecated in 0.20 and replaced by
`-debug=walletdb` to distinguish it from `coindb`, has been removed. (#19202)
- A `download` permission has been extracted from the `noban` permission. For
compatibility, `noban` implies the `download` permission, but this may change
in future releases. Refer to the help of the affected settings `-whitebind`
and `-whitelist` for more details. (#19191)
- Netmasks that contain 1-bits after 0-bits (the 1-bits are not contiguous on
the left side, e.g. 255.0.255.255) are no longer accepted. They are invalid
according to RFC 4632. Netmasks are used in the `-rpcallowip` and `-whitelist`
configuration options and in the `setban` RPC. (#19628)
Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.
Tools and Utilities
-------------------
- The `connections` field of `bitcoin-cli -getinfo` is expanded to return a JSON
object with `in`, `out` and `total` numbers of peer connections. It previously
returned a single integer value for the total number of peer connections. (#19405)
- A new `bitcoin-cli -generate` command, equivalent to RPC `generatenewaddress`
followed by `generatetoaddress`, can generate blocks for command line testing
purposes. This is a client-side version of the
former `generate` RPC. See the help for details. (#19133)
- The `bitcoin-cli -getinfo` command now displays the wallet name and balance for
each of the loaded wallets when more than one is loaded (e.g. in multiwallet
mode) and a wallet is not specified with `-rpcwallet`. (#18594)
New settings
------------
- The `startupnotify` option is used to specify a command to
execute when Bitcoin Core has finished with its startup
sequence. (#15367)
Wallet
------
- Backwards compatibility has been dropped for two `getaddressinfo` RPC
deprecations, as notified in the 0.20 release notes. The deprecated `label`
field has been removed as well as the deprecated `labels` behavior of
returning a JSON object containing `name` and `purpose` key-value pairs. Since
0.20, the `labels` field returns a JSON array of label names. (#19200)
- To improve wallet privacy, the frequency of wallet rebroadcast attempts is
reduced from approximately once every 15 minutes to once every 12-36 hours.
To maintain a similar level of guarantee for initial broadcast of wallet
transactions, the mempool tracks these transactions as a part of the newly
introduced unbroadcast set. See the "P2P and network changes" section for
more information on the unbroadcast set. (#18038)
- The `sendtoaddress` and `sendmany` RPCs accept an optional `verbose=True`
argument to also return the fee reason about the sent tx. (#19501)
- The wallet can create a transaction without change even when the keypool is
empty. Previously it failed. (#17219)
- The `-salvagewallet` startup option has been removed. A new `salvage` command
has been added to the `bitcoin-wallet` tool which performs the salvage
operations that `-salvagewallet` did. (#18918)
- A new configuration flag `-maxapsfee` has been added, which sets the max
allowed avoid partial spends (APS) fee. It defaults to 0 (i.e. fee is the
same with and without APS). Setting it to -1 will disable APS, unless
`-avoidpartialspends` is set. (#14582)
- The wallet will now avoid partial spends (APS) by default, if this does not
result in a difference in fees compared to the non-APS variant. The allowed
fee threshold can be adjusted using the new `-maxapsfee` configuration
option. (#14582)
- The `createwallet`, `loadwallet`, and `unloadwallet` RPCs now accept
`load_on_startup` options to modify the settings list. Unless these options
are explicitly set to true or false, the list is not modified, so the RPC
methods remain backwards compatible. (#15937)
- A new `send` RPC with similar syntax to `walletcreatefundedpsbt`, including
support for coin selection and a custom fee rate. The `send` RPC is
experimental and may change in subsequent releases. Using it is encouraged
once it's no longer experimental: `sendmany` and `sendtoaddress` may be
deprecated in a future release. (#16378)
- `fundrawtransaction` and `walletcreatefundedpsbt` when used with the
`lockUnspents` argument now lock manually selected coins, in addition to
automatically selected coins. Note that locked coins are never used in
automatic coin selection, but can still be manually selected. (#18244)
- The `-zapwallettxes` startup option has been removed and its functionality
removed from the wallet. This option was originally intended to allow for
the fee bumping of transactions that did not signal RBF. This functionality
has been superseded with the abandon transaction feature. (#19671)
- The error code when no wallet is loaded, but a wallet RPC is called, has been
changed from `-32601` (method not found) to `-18` (wallet not found).
(#20101)
### Automatic wallet creation removed
Bitcoin Core will no longer automatically create new wallets on startup. It will
load existing wallets specified by `-wallet` options on the command line or in
`bitcoin.conf` or `settings.json` files. And by default it will also load a
top-level unnamed ("") wallet. However, if specified wallets don't exist,
Bitcoin Core will now just log warnings instead of creating new wallets with
new keys and addresses like previous releases did.
New wallets can be created through the GUI (which has a more prominent create
wallet option), through the `bitcoin-cli createwallet` or `bitcoin-wallet
create` commands, or the `createwallet` RPC. (#15454)
### Experimental Descriptor Wallets
Please note that Descriptor Wallets are still experimental and not all expected functionality
is available. Additionally there may be some bugs and current functions may change in the future.
Bugs and missing functionality can be reported to the [issue tracker](https://github.com/bitcoin/bitcoin/issues).
0.21 introduces a new type of wallet - Descriptor Wallets. Descriptor Wallets store
scriptPubKey information using descriptors. This is in contrast to the Legacy Wallet
structure where keys are used to generate scriptPubKeys and addresses. Because of this
shift to being script based instead of key based, many of the confusing things that Legacy
Wallets do are not possible with Descriptor Wallets. Descriptor Wallets use a definition
of "mine" for scripts which is simpler and more intuitive than that used by Legacy Wallets.
Descriptor Wallets also uses different semantics for watch-only things and imports.
As Descriptor Wallets are a new type of wallet, their introduction does not affect existing wallets.
Users who already have a Bitcoin Core wallet can continue to use it as they did before without
any change in behavior. Newly created Legacy Wallets (which is the default type of wallet) will
behave as they did in previous versions of Bitcoin Core.
The differences between Descriptor Wallets and Legacy Wallets are largely limited to non user facing
things. They are intended to behave similarly except for the import/export and watchonly functionality
as described below.
#### Creating Descriptor Wallets
Descriptor Wallets are not created by default. They must be explicitly created using the
`createwallet` RPC or via the GUI. A `descriptors` option has been added to `createwallet`.
Setting `descriptors` to `true` will create a Descriptor Wallet instead of a Legacy Wallet.
In the GUI, a checkbox has been added to the Create Wallet Dialog to indicate that a
Descriptor Wallet should be created.
Without those options being set, a Legacy Wallet will be created instead. Additionally the
Default Wallet created upon first startup of Bitcoin Core will be a Legacy Wallet.
#### `IsMine` Semantics
`IsMine` refers to the function used to determine whether a script belongs to the wallet.
This is used to determine whether an output belongs to the wallet. `IsMine` in Legacy Wallets
returns true if the wallet would be able to sign an input that spends an output with that script.
Since keys can be involved in a variety of different scripts, this definition for `IsMine` can
lead to many unexpected scripts being considered part of the wallet.
With Descriptor Wallets, descriptors explicitly specify the set of scripts that are owned by
the wallet. Since descriptors are deterministic and easily enumerable, users will know exactly
what scripts the wallet will consider to belong to it. Additionally the implementation of `IsMine`
in Descriptor Wallets is far simpler than for Legacy Wallets. Notably, in Legacy Wallets, `IsMine`
allowed for users to take one type of address (e.g. P2PKH), mutate it into another address type
(e.g. P2WPKH), and the wallet would still detect outputs sending to the new address type
even without that address being requested from the wallet. Descriptor Wallets does not
allow for this and will only watch for the addresses that were explicitly requested from the wallet.
These changes to `IsMine` will make it easier to reason about what scripts the wallet will
actually be watching for in outputs. However for the vast majority of users, this change is
largely transparent and will not have noticeable effect.
#### Imports and Exports
In Legacy Wallets, raw scripts and keys could be imported to the wallet. Those imported scripts
and keys are treated separately from the keys generated by the wallet. This complicates the `IsMine`
logic as it has to distinguish between spendable and watchonly.
Descriptor Wallets handle importing scripts and keys differently. Only complete descriptors can be
imported. These descriptors are then added to the wallet as if it were a descriptor generated by
the wallet itself. This simplifies the `IsMine` logic so that it no longer has to distinguish
between spendable and watchonly. As such, the watchonly model for Descriptor Wallets is also
different and described in more detail in the next section.
To import into a Descriptor Wallet, a new `importdescriptors` RPC has been added that uses a syntax
similar to that of `importmulti`.
As Legacy Wallets and Descriptor Wallets use different mechanisms for storing and importing scripts and keys
the existing import RPCs have been disabled for descriptor wallets.
New export RPCs for Descriptor Wallets have not yet been added.
The following RPCs are disabled for Descriptor Wallets:
* importprivkey
* importpubkey
* importaddress
* importwallet
* dumpprivkey
* dumpwallet
* importmulti
* addmultisigaddress
* sethdseed
#### Watchonly Wallets
A Legacy Wallet contains both private keys and scripts that were being watched.
Those watched scripts would not contribute to your normal balance. In order to see the watchonly
balance and to use watchonly things in transactions, an `include_watchonly` option was added
to many RPCs that would allow users to do that. However it is easy to forget to include this option.
Descriptor Wallets move to a per-wallet watchonly model. Instead an entire wallet is considered to be
watchonly depending on whether it was created with private keys disabled. This eliminates the need
to distinguish between things that are watchonly and things that are not within a wallet itself.
This change does have a caveat. If a Descriptor Wallet with private keys *enabled* has
a multiple key descriptor without all of the private keys (e.g. `multi(...)` with only one private key),
then the wallet will fail to sign and broadcast transactions. Such wallets would need to use the PSBT
workflow but the typical GUI Send, `sendtoaddress`, etc. workflows would still be available, just
non-functional.
This issue is worsened if the wallet contains both single key (e.g. `wpkh(...)`) descriptors and such
multiple key descriptors as some transactions could be signed and broadast and others not. This is
due to some transactions containing only single key inputs, while others would contain both single
key and multiple key inputs, depending on which are available and how the coin selection algorithm
selects inputs. However this is not considered to be a supported use case; multisigs
should be in their own wallets which do not already have descriptors. Although users cannot export
descriptors with private keys for now as explained earlier.
#### BIP 44/49/84 Support
The change to using descriptors changes the default derivation paths used by Bitcoin Core
to adhere to BIP 44/49/84. Descriptors with different derivation paths can be imported without
issue.
### Wallet RPC changes
- The `upgradewallet` RPC replaces the `-upgradewallet` command line option.
(#15761)
- The `settxfee` RPC will fail if the fee was set higher than the `-maxtxfee`
command line setting. The wallet will already fail to create transactions
with fees higher than `-maxtxfee`. (#18467)
GUI changes
-----------
- Wallets created or loaded in the GUI will now be automatically loaded on
startup, so they don't need to be manually reloaded next time Bitcoin Core is
started. The list of wallets to load on startup is stored in
`\<datadir\>/settings.json` and augments any command line or `bitcoin.conf`
`-wallet=` settings that specify more wallets to load. Wallets that are
unloaded in the GUI get removed from the settings list so they won't load
again automatically next startup. (#19754)
- The GUI Peers window no longer displays a "Ban Score" field. This is part of
changes in 0.20.1 and in this release to the handling of misbehaving
peers. Refer to "Changes regarding misbehaving peers" in the 0.20.1 release
notes for details. (#19512)
Low-level changes
0.21.2 change log
=================
RPC
---
### P2P protocol and network code
- To make RPC `sendtoaddress` more consistent with `sendmany` the following error
`sendtoaddress` codes were changed from `-4` to `-6`:
- Insufficient funds
- Fee estimation failed
- Transaction has too long of a mempool chain
- #21644 use NetPermissions::HasFlag() in CConnman::Bind() (jonatack)
- #22569 Rate limit the processing of rumoured addresses (sipa)
- The `sendrawtransaction` error code for exceeding `maxfeerate` has been changed from
`-26` to `-25`. The error string has been changed from "absurdly-high-fee" to
"Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)." The
`testmempoolaccept` RPC returns `max-fee-exceeded` rather than `absurdly-high-fee`
as the `reject-reason`. (#19339)
### Wallet
- To make wallet and rawtransaction RPCs more consistent, the error message for
exceeding maximum feerate has been changed to "Fee exceeds maximum configured by user
(e.g. -maxtxfee, maxfeerate)." (#19339)
- #21907 Do not iterate a directory if having an error while accessing it (hebasto)
Tests
-----
### RPC
- #19361 Reset scantxoutset progress before inferring descriptors (prusnak)
### Build System
- #21932 depends: update Qt 5.9 source url (kittywhiskers)
- #22017 Update Windows code signing certificate (achow101)
- #22191 Use custom MacOS code signing tool (achow101)
- #22713 Fix build with Boost 1.77.0 (sizeofvoid)
### Tests and QA
- #20182 Build with --enable-werror by default, and document exceptions (hebasto)
- #20535 Fix intermittent feature_taproot issue (MarcoFalke)
- #21663 Fix macOS brew install command (hebasto)
- #22279 add missing ECCVerifyHandle to base_encode_decode (apoelstra)
- #22730 Run fuzzer task for the master branch only (hebasto)
### GUI
- #277 Do not use QClipboard::Selection on Windows and macOS. (hebasto)
- #280 Remove user input from URI error message (prayank23)
- #365 Draw "eye" sign at the beginning of watch-only addresses (hebasto)
### Miscellaneous
- #22002 Fix crash when parsing command line with -noincludeconf=0 (MarcoFalke)
- #22137 util: Properly handle -noincludeconf on command line (take 2) (MarcoFalke)
- The BIP 325 default signet can be enabled by the `-chain=signet` or `-signet`
setting. The settings `-signetchallenge` and `-signetseednode` allow
enabling a custom signet.
Credits
=======
Thanks to everyone who directly contributed to this release:
- Andrew Chow
- Andrew Poelstra
- fanquake
- Hennadii Stepanov
- Jon Atack
- Kittywhiskers Van Gogh
- Luke Dashjr
- MarcoFalke
- Pavol Rusnak
- Pieter Wuille
- prayank23
- Rafael Sadowski
- W. J. van der Laan
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,203 @@
0.21.1 Release Notes
====================
Bitcoin Core version 0.21.1 is now available from:
<https://bitcoincore.org/bin/bitcoin-core-0.21.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.
Notable changes
===============
## Taproot Soft Fork
Included in this release are the mainnet and testnet activation
parameters for the taproot soft fork (BIP341) which also adds support
for schnorr signatures (BIP340) and tapscript (BIP342).
If activated, these improvements will allow users of single-signature
scripts, multisignature scripts, and complex contracts to all use
identical-appearing commitments that enhance their privacy and the
fungibility of all bitcoins. Spenders will enjoy lower fees and the
ability to resolve many multisig scripts and complex contracts with the
same efficiency, low fees, and large anonymity set as single-sig users.
Taproot and schnorr also include efficiency improvements for full nodes
such as the ability to batch signature verification. Together, the
improvements lay the groundwork for future potential
upgrades that may improve efficiency, privacy, and fungibility further.
Activation for taproot is being managed using a variation of BIP9
versionbits called Speedy Trial (described in BIP341). Taproot's
versionbit is bit 2, and nodes will begin tracking which blocks signal
support for taproot at the beginning of the first retarget period after
taproots start date of 24 April 2021. If 90% of blocks within a
2,016-block retarget period (about two weeks) signal support for taproot
prior to the first retarget period beginning after the time of 11 August
2021, the soft fork will be locked in, and taproot will then be active
as of block 709632 (expected in early or mid November).
Should taproot not be locked in via Speedy Trial activation, it is
expected that a follow-up activation mechanism will be deployed, with
changes to address the reasons the Speedy Trial method failed.
This release includes the ability to pay taproot addresses, although
payments to such addresses are not secure until taproot activates.
It also includes the ability to relay and mine taproot transactions
after activation. Beyond those two basic capabilities, this release
does not include any code that allows anyone to directly use taproot.
The addition of taproot-related features to Bitcoin Core's wallet is
expected in later releases once taproot activation is assured.
All users, businesses, and miners are encouraged to upgrade to this
release (or a subsequent compatible release) unless they object to
activation of taproot. If taproot is locked in, then upgrading before
block 709632 is highly recommended to help enforce taproot's new rules
and to avoid the unlikely case of seeing falsely confirmed transactions.
Miners who want to activate Taproot should preferably use this release
to control their signaling. The `getblocktemplate` RPC results will
automatically be updated to signal once the appropriate start has been
reached and continue signaling until the timeout occurs or taproot
activates. Alternatively, miners may manually start signaling on bit 2
at any time; if taproot activates, they will need to ensure they update
their nodes before block 709632 or non-upgraded nodes could cause them to mine on
an invalid chain. See the [versionbits
FAQ](https://bitcoincore.org/en/2016/06/08/version-bits-miners-faq/) for
details.
For more information about taproot, please see the following resources:
- Technical specifications
- [BIP340 Schnorr signatures for secp256k1](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki)
- [BIP341 Taproot: SegWit version 1 spending rules](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki)
- [BIP342 Validation of Taproot scripts](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki)
- Popular articles;
- [Taproot Is Coming: What It Is, and How It Will Benefit Bitcoin](https://bitcoinmagazine.com/technical/taproot-coming-what-it-and-how-it-will-benefit-bitcoin)
- [What do Schnorr Signatures Mean for Bitcoin?](https://academy.binance.com/en/articles/what-do-schnorr-signatures-mean-for-bitcoin)
- [The Schnorr Signature & Taproot Softfork Proposal](https://blog.bitmex.com/the-schnorr-signature-taproot-softfork-proposal/)
- Development history overview
- [Taproot](https://bitcoinops.org/en/topics/taproot/)
- [Schnorr signatures](https://bitcoinops.org/en/topics/schnorr-signatures/)
- [Tapscript](https://bitcoinops.org/en/topics/tapscript/)
- [Soft fork activation](https://bitcoinops.org/en/topics/soft-fork-activation/)
- Other
- [Questions and answers related to taproot](https://bitcoin.stackexchange.com/questions/tagged/taproot)
- [Taproot review](https://github.com/ajtowns/taproot-review)
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 where such
addresses already have meaning (like signet).
0.21.1 change log
=================
### Consensus
- #21377 Speedy trial support for versionbits (ajtowns)
- #21686 Speedy trial activation parameters for Taproot (achow101)
### P2P protocol and network code
- #20852 allow CSubNet of non-IP networks (vasild)
- #21043 Avoid UBSan warning in ProcessMessage(…) (practicalswift)
### Wallet
- #21166 Introduce DeferredSignatureChecker and have SignatureExtractorClass subclass it (achow101)
- #21083 Avoid requesting fee rates multiple times during coin selection (achow101)
### RPC and other APIs
- #21201 Disallow sendtoaddress and sendmany when private keys disabled (achow101)
### Build system
- #21486 link against -lsocket if required for `*ifaddrs` (fanquake)
- #20983 Fix MSVC build after gui#176 (hebasto)
### Tests and QA
- #21380 Add fuzzing harness for versionbits (ajtowns)
- #20812 fuzz: Bump FuzzedDataProvider.h (MarcoFalke)
- #20740 fuzz: Update FuzzedDataProvider.h from upstream (LLVM) (practicalswift)
- #21446 Update vcpkg checkout commit (sipsorcery)
- #21397 fuzz: Bump FuzzedDataProvider.h (MarcoFalke)
- #21081 Fix the unreachable code at `feature_taproot` (brunoerg)
- #20562 Test that a fully signed tx given to signrawtx is unchanged (achow101)
- #21571 Make sure non-IP peers get discouraged and disconnected (vasild, MarcoFalke)
- #21489 fuzz: cleanups for versionbits fuzzer (ajtowns)
### Miscellaneous
- #20861 BIP 350: Implement Bech32m and use it for v1+ segwit addresses (sipa)
### Documentation
- #21384 add signet to bitcoin.conf documentation (jonatack)
- #21342 Remove outdated comment (hebasto)
Credits
=======
Thanks to everyone who directly contributed to this release:
- Aaron Clauson
- Andrew Chow
- Anthony Towns
- Bruno Garcia
- Fabian Jahr
- fanquake
- Hennadii Stepanov
- Jon Atack
- Luke Dashjr
- MarcoFalke
- Pieter Wuille
- practicalswift
- randymcmillan
- Sjors Provoost
- Vasil Dimov
- W. J. van der Laan
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@@ -5,6 +5,16 @@ It is possible to run Bitcoin Core as a Tor onion service, and connect to such s
The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on port 9150. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly
configure Tor.
## How to see information about your Tor configuration via Bitcoin Core
There are several ways to see your local onion address in Bitcoin Core:
- in the debug log (grep for "tor:" or "AddLocal")
- in the output of RPC `getnetworkinfo` in the "localaddresses" section
- in the output of the CLI `-netinfo` peer connections dashboard
You may set the `-debug=tor` config logging option to have additional
information in the debug log about your Tor configuration.
## 1. Run Bitcoin Core behind a Tor proxy
@@ -52,14 +62,19 @@ The directory can be different of course, but virtual port numbers should be equ
your bitcoind's P2P listen port (8333 by default), and target addresses and ports
should be equal to binding address and port for inbound Tor connections (127.0.0.1:8334 by default).
-externalip=X You can tell bitcoin about its publicly reachable address using
this option, and this can be a .onion address. Given the above
configuration, you can find your .onion address in
-externalip=X You can tell bitcoin about its publicly reachable addresses using
this option, and this can be an onion address. Given the above
configuration, you can find your onion address in
/var/lib/tor/bitcoin-service/hostname. For connections
coming from unroutable addresses (such as 127.0.0.1, where the
Tor proxy typically runs), .onion addresses are given
Tor proxy typically runs), onion addresses are given
preference for your node to advertise itself with.
You can set multiple local addresses with -externalip. The
one that will be rumoured to a particular peer is the most
compatible one and also using heuristics, e.g. the address
with the most incoming connections, etc.
-listen You'll need to enable listening for incoming connections, as this
is off by default behind a proxy.
@@ -72,7 +87,7 @@ should be equal to binding address and port for inbound Tor connections (127.0.0
In a typical situation, where you're only reachable via Tor, this should suffice:
./bitcoind -proxy=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -listen
./bitcoind -proxy=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.onion -listen
(obviously, replace the .onion address with your own). It should be noted that you still
listen on all devices and another node could establish a clearnet connection, when knowing
@@ -90,7 +105,7 @@ and open port 8333 on your firewall (or use -upnp).
If you only want to use Tor to reach .onion addresses, but not use it as a proxy
for normal IPv4/IPv6 communication, use:
./bitcoind -onion=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover
./bitcoind -onion=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.onion -discover
## 3. Automatically listen on Tor

View File

@@ -4,13 +4,16 @@
# Network-related settings:
# Note that if you use testnet or regtest, particularly with the options
# Note that if you use testnet, signet or regtest, particularly with the options
# addnode, connect, port, bind, rpcport, rpcbind or wallet, you will also
# want to read "[Sections]" further down.
# Run on the test network instead of the real bitcoin network.
# Run on the testnet network
#testnet=0
# Run on a signet network
#signet=0
# Run a regression test network
#regtest=0
@@ -57,7 +60,7 @@
# Listening mode, enabled by default except when 'connect' is being used
#listen=1
# Port on which to listen for connections (default: 8333, testnet: 18333, regtest: 18444)
# Port on which to listen for connections (default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
#port=
# Maximum number of inbound+outbound connections.
@@ -155,7 +158,7 @@
#minimizetotray=1
# [Sections]
# Most options apply to mainnet, testnet and regtest.
# Most options apply to mainnet, testnet, signet and regtest.
# If you want to confine an option to just one network, you should add it in the
# relevant section below.
# EXCEPTIONS: The options addnode, connect, port, bind, rpcport, rpcbind and wallet
@@ -167,5 +170,8 @@
# Options only for testnet
[test]
# Options only for signet
[signet]
# Options only for regtest
[regtest]

View File

@@ -20,9 +20,8 @@ else
LIBUNIVALUE = $(UNIVALUE_LIBS)
endif
BITCOIN_INCLUDES=-I$(builddir) $(BDB_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/secp256k1/include $(BDB_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS)
LIBBITCOIN_SERVER=libbitcoin_server.a

View File

@@ -78,6 +78,7 @@ QT_MOC_CPP = \
qt/moc_transactiondesc.cpp \
qt/moc_transactiondescdialog.cpp \
qt/moc_transactionfilterproxy.cpp \
qt/moc_transactionoverviewwidget.cpp \
qt/moc_transactiontablemodel.cpp \
qt/moc_transactionview.cpp \
qt/moc_utilitydialog.cpp \
@@ -151,6 +152,7 @@ BITCOIN_QT_H = \
qt/transactiondesc.h \
qt/transactiondescdialog.h \
qt/transactionfilterproxy.h \
qt/transactionoverviewwidget.h \
qt/transactionrecord.h \
qt/transactiontablemodel.h \
qt/transactionview.h \

View File

@@ -2,6 +2,7 @@ QT_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 \
@@ -27,7 +28,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_gl.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 \
@@ -38,6 +42,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 \
@@ -54,6 +59,7 @@ 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 \
@@ -73,6 +79,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 \

View File

@@ -157,7 +157,8 @@ FUZZ_TARGETS = \
test/fuzz/txrequest \
test/fuzz/txundo_deserialize \
test/fuzz/uint160_deserialize \
test/fuzz/uint256_deserialize
test/fuzz/uint256_deserialize \
test/fuzz/versionbits
if ENABLE_FUZZ
noinst_PROGRAMS += $(FUZZ_TARGETS:=)
@@ -1260,6 +1261,12 @@ test_fuzz_uint256_deserialize_LDADD = $(FUZZ_SUITE_LD_COMMON)
test_fuzz_uint256_deserialize_LDFLAGS = $(FUZZ_SUITE_LDFLAGS_COMMON)
test_fuzz_uint256_deserialize_SOURCES = test/fuzz/deserialize.cpp
test_fuzz_versionbits_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
test_fuzz_versionbits_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
test_fuzz_versionbits_LDADD = $(FUZZ_SUITE_LD_COMMON)
test_fuzz_versionbits_LDFLAGS = $(FUZZ_SUITE_LDFLAGS_COMMON)
test_fuzz_versionbits_SOURCES = test/fuzz/versionbits.cpp
endif # ENABLE_FUZZ
nodist_test_test_bitcoin_SOURCES = $(GENERATED_TEST_FILES)

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

@@ -19,7 +19,7 @@ static void Bech32Encode(benchmark::Bench& bench)
tmp.reserve(1 + 32 * 8 / 5);
ConvertBits<8, 5, true>([&](unsigned char c) { tmp.push_back(c); }, v.begin(), v.end());
bench.batch(v.size()).unit("byte").run([&] {
bech32::Encode("bc", tmp);
bech32::Encode(bech32::Encoding::BECH32, "bc", tmp);
});
}

View File

@@ -50,7 +50,10 @@ static void CoinSelection(benchmark::Bench& bench)
}
const CoinEligibilityFilter filter_standard(1, 6, 0);
const CoinSelectionParams coin_selection_params(true, 34, 148, CFeeRate(0), 0);
const CoinSelectionParams coin_selection_params(/* use_bnb= */ true, /* change_output_size= */ 34,
/* change_spend_size= */ 148, /* effective_feerate= */ CFeeRate(0),
/* long_term_feerate= */ CFeeRate(0), /* discard_feerate= */ CFeeRate(0),
/* tx_no_inputs_size= */ 0);
bench.run([&] {
std::set<CInputCoin> setCoinsRet;
CAmount nValueRet;

View File

@@ -80,16 +80,18 @@ public:
consensus.nPowTargetSpacing = 10 * 60;
consensus.fPowAllowMinDifficultyBlocks = false;
consensus.fPowNoRetargeting = false;
consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
consensus.nRuleChangeActivationThreshold = 1815; // 90% of 2016
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
// Deployment of Taproot (BIPs 340-342)
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1199145601; // January 1, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1230767999; // December 31, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1619222400; // April 24th, 2021
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 709632; // Approximately November 12th, 2021
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000001533efd8d716a517fe2c5008");
consensus.defaultAssumeValid = uint256S("0x0000000000000000000b9d2ec5a352ecba0592946514a92f14319dc2b367fc72"); // 654683
@@ -196,13 +198,15 @@ public:
consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
// Deployment of Taproot (BIPs 340-342)
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1199145601; // January 1, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1230767999; // December 31, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1619222400; // April 24th, 2021
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000001db6ec4ac88cf2272c6");
consensus.defaultAssumeValid = uint256S("0x000000000000006433d1efec504c53ca332b64963c425395515b01977bd7b3b0"); // 1864000
@@ -272,7 +276,7 @@ public:
bin = ParseHex("512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae");
vSeeds.emplace_back("178.128.221.177");
vSeeds.emplace_back("2a01:7c8:d005:390::5");
vSeeds.emplace_back("ntv3mtqw5wt63red.onion:38333");
vSeeds.emplace_back("v7ajjeirttkbnt32wpy3c6w3emwnfr3fkla7hpxcfokr3ysd3kqtzmqd.onion:38333");
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000000000000019fd16269a");
consensus.defaultAssumeValid = uint256S("0x0000002a1de0f46379358c1fd09906f7ac59adf3712323ed90eb59e4c183c020"); // 9434
@@ -322,18 +326,20 @@ public:
consensus.nPowTargetSpacing = 10 * 60;
consensus.fPowAllowMinDifficultyBlocks = false;
consensus.fPowNoRetargeting = false;
consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
consensus.nRuleChangeActivationThreshold = 1815; // 90% of 2016
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
consensus.MinBIP9WarningHeight = 0;
consensus.powLimit = uint256S("00000377ae000000000000000000000000000000000000000000000000000000");
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
// Activation of Taproot (BIPs 340-342)
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
// message start is defined as the first 4 bytes of the sha256d of the block script
CHashWriter h(SER_DISK, 0);
@@ -391,12 +397,16 @@ public:
consensus.fPowNoRetargeting = true;
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
consensus.nMinimumChainWork = uint256{};
consensus.defaultAssumeValid = uint256{};
@@ -449,10 +459,11 @@ public:
/**
* Allows modifying the Version Bits regtest parameters.
*/
void UpdateVersionBitsParameters(Consensus::DeploymentPos d, int64_t nStartTime, int64_t nTimeout)
void UpdateVersionBitsParameters(Consensus::DeploymentPos d, int64_t nStartTime, int64_t nTimeout, int min_activation_height)
{
consensus.vDeployments[d].nStartTime = nStartTime;
consensus.vDeployments[d].nTimeout = nTimeout;
consensus.vDeployments[d].min_activation_height = min_activation_height;
}
void UpdateActivationParametersFromArgs(const ArgsManager& args);
};
@@ -475,22 +486,26 @@ void CRegTestParams::UpdateActivationParametersFromArgs(const ArgsManager& args)
for (const std::string& strDeployment : args.GetArgs("-vbparams")) {
std::vector<std::string> vDeploymentParams;
boost::split(vDeploymentParams, strDeployment, boost::is_any_of(":"));
if (vDeploymentParams.size() != 3) {
throw std::runtime_error("Version bits parameters malformed, expecting deployment:start:end");
if (vDeploymentParams.size() < 3 || 4 < vDeploymentParams.size()) {
throw std::runtime_error("Version bits parameters malformed, expecting deployment:start:end[:min_activation_height]");
}
int64_t nStartTime, nTimeout;
int min_activation_height = 0;
if (!ParseInt64(vDeploymentParams[1], &nStartTime)) {
throw std::runtime_error(strprintf("Invalid nStartTime (%s)", vDeploymentParams[1]));
}
if (!ParseInt64(vDeploymentParams[2], &nTimeout)) {
throw std::runtime_error(strprintf("Invalid nTimeout (%s)", vDeploymentParams[2]));
}
if (vDeploymentParams.size() >= 4 && !ParseInt32(vDeploymentParams[3], &min_activation_height)) {
throw std::runtime_error(strprintf("Invalid min_activation_height (%s)", vDeploymentParams[3]));
}
bool found = false;
for (int j=0; j < (int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; ++j) {
if (vDeploymentParams[0] == VersionBitsDeploymentInfo[j].name) {
UpdateVersionBitsParameters(Consensus::DeploymentPos(j), nStartTime, nTimeout);
UpdateVersionBitsParameters(Consensus::DeploymentPos(j), nStartTime, nTimeout, min_activation_height);
found = true;
LogPrintf("Setting version bits activation parameters for %s to start=%ld, timeout=%ld\n", vDeploymentParams[0], nStartTime, nTimeout);
LogPrintf("Setting version bits activation parameters for %s to start=%ld, timeout=%ld, min_activation_height=%d\n", vDeploymentParams[0], nStartTime, nTimeout, min_activation_height);
break;
}
}

View File

@@ -23,7 +23,7 @@ void SetupChainParamsBaseOptions(ArgsManager& argsman)
"This is intended for regression testing tools and app development. Equivalent to -chain=regtest.", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-segwitheight=<n>", "Set the activation height of segwit. -1 to disable. (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
argsman.AddArg("-testnet", "Use the test chain. Equivalent to -chain=test.", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-vbparams=deployment:start:end", "Use given start/end times for specified version bits deployment (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-vbparams=deployment:start:end[:min_activation_height]", "Use given start/end times and min_activation_height for specified version bits deployment (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-signet", "Use the signet chain. Equivalent to -chain=signet. Note that the network is defined by the -signetchallenge parameter", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-signetchallenge", "Blocks must satisfy the given script to be considered valid (only for signet networks; defaults to the global default signet test network challenge)", ArgsManager::ALLOW_STRING, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-signetseednode", "Specify a seed node for the signet network, in the hostname[:port] format, e.g. sig.net:1234 (may be used multiple times to specify multiple seed nodes; defaults to the global default signet test network seed node(s))", ArgsManager::ALLOW_STRING, OptionsCategory::CHAINPARAMS);

View File

@@ -29,6 +29,11 @@ struct BIP9Deployment {
int64_t nStartTime;
/** Timeout/expiry MedianTime for the deployment attempt. */
int64_t nTimeout;
/** If lock in occurs, delay activation until at least this block
* height. Note that activation will only occur on a retarget
* boundary.
*/
int min_activation_height{0};
/** Constant for nTimeout very far in the future. */
static constexpr int64_t NO_TIMEOUT = std::numeric_limits<int64_t>::max();
@@ -38,6 +43,11 @@ struct BIP9Deployment {
* process (which takes at least 3 BIP9 intervals). Only tests that specifically test the
* behaviour during activation cannot use this. */
static constexpr int64_t ALWAYS_ACTIVE = -1;
/** Special value for nStartTime indicating that the deployment is never active.
* This is useful for integrating the code changes for a new feature
* prior to deploying it on some or all networks. */
static constexpr int64_t NEVER_ACTIVE = -2;
};
/**

View File

@@ -119,31 +119,72 @@ static bool CheckTxScriptsSanity(const CMutableTransaction& tx)
static bool DecodeTx(CMutableTransaction& tx, const std::vector<unsigned char>& tx_data, bool try_no_witness, bool try_witness)
{
// General strategy:
// - Decode both with extended serialization (which interprets the 0x0001 tag as a marker for
// the presense of witnesses) and with legacy serialization (which interprets the tag as a
// 0-input 1-output incomplete transaction).
// - Restricted by try_no_witness (which disables legacy if false) and try_witness (which
// disables extended if false).
// - Ignore serializations that do not fully consume the hex string.
// - If neither succeeds, fail.
// - If only one succeeds, return that one.
// - If both decode attempts succeed:
// - If only one passes the CheckTxScriptsSanity check, return that one.
// - If neither or both pass CheckTxScriptsSanity, return the extended one.
CMutableTransaction tx_extended, tx_legacy;
bool ok_extended = false, ok_legacy = false;
// Try decoding with extended serialization support, and remember if the result successfully
// consumes the entire input.
if (try_witness) {
CDataStream ssData(tx_data, SER_NETWORK, PROTOCOL_VERSION);
try {
ssData >> tx;
// If transaction looks sane, we don't try other mode even if requested
if (ssData.empty() && (!try_no_witness || CheckTxScriptsSanity(tx))) {
return true;
}
ssData >> tx_extended;
if (ssData.empty()) ok_extended = true;
} catch (const std::exception&) {
// Fall through.
}
}
// Optimization: if extended decoding succeeded and the result passes CheckTxScriptsSanity,
// don't bother decoding the other way.
if (ok_extended && CheckTxScriptsSanity(tx_extended)) {
tx = std::move(tx_extended);
return true;
}
// Try decoding with legacy serialization, and remember if the result successfully consumes the entire input.
if (try_no_witness) {
CDataStream ssData(tx_data, SER_NETWORK, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS);
try {
ssData >> tx;
if (ssData.empty()) {
return true;
}
ssData >> tx_legacy;
if (ssData.empty()) ok_legacy = true;
} catch (const std::exception&) {
// Fall through.
}
}
// If legacy decoding succeeded and passes CheckTxScriptsSanity, that's our answer, as we know
// at this point that extended decoding either failed or doesn't pass the sanity check.
if (ok_legacy && CheckTxScriptsSanity(tx_legacy)) {
tx = std::move(tx_legacy);
return true;
}
// If extended decoding succeeded, and neither decoding passes sanity, return the extended one.
if (ok_extended) {
tx = std::move(tx_extended);
return true;
}
// If legacy decoding succeeded and extended didn't, return the legacy one.
if (ok_legacy) {
tx = std::move(tx_legacy);
return true;
}
// If none succeeded, we failed.
return false;
}

View File

@@ -236,7 +236,11 @@ void ofstream::close()
}
#else // __GLIBCXX__
#if BOOST_VERSION >= 107700
static_assert(sizeof(*BOOST_FILESYSTEM_C_STR(fs::path())) == sizeof(wchar_t),
#else
static_assert(sizeof(*fs::path().BOOST_FILESYSTEM_C_STR) == sizeof(wchar_t),
#endif // BOOST_VERSION >= 107700
"Warning: This build is using boost::filesystem ofstream and ifstream "
"implementations which will fail to open paths containing multibyte "
"characters. You should delete this static_assert to ignore this warning, "

View File

@@ -461,7 +461,7 @@ void SetupServerArgs(NodeContext& node)
argsman.AddArg("-peerbloomfilters", strprintf("Support filtering of blocks and transaction with bloom filters (default: %u)", DEFAULT_PEERBLOOMFILTERS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-peerblockfilters", strprintf("Serve compact block filters to peers per BIP 157 (default: %u)", DEFAULT_PEERBLOCKFILTERS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-permitbaremultisig", strprintf("Relay non-P2SH multisig (default: %u)", DEFAULT_PERMIT_BAREMULTISIG), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-port=<port>", strprintf("Listen for connections on <port> (default: %u, testnet: %u signet: %u, regtest: %u)", defaultChainParams->GetDefaultPort(), testnetChainParams->GetDefaultPort(), signetChainParams->GetDefaultPort(), regtestChainParams->GetDefaultPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
argsman.AddArg("-port=<port>", strprintf("Listen for connections on <port>. Nodes not using the default ports (default: %u, testnet: %u, signet: %u, regtest: %u) are unlikely to get incoming connections.", defaultChainParams->GetDefaultPort(), testnetChainParams->GetDefaultPort(), signetChainParams->GetDefaultPort(), regtestChainParams->GetDefaultPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
argsman.AddArg("-proxy=<ip:port>", "Connect through SOCKS5 proxy, set -noproxy to disable (default: disabled)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-proxyrandomize", strprintf("Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u)", DEFAULT_PROXYRANDOMIZE), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
argsman.AddArg("-seednode=<ip>", "Connect to a node to retrieve peer addresses, and disconnect. This option can be specified multiple times to connect to multiple nodes.", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);

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

@@ -28,6 +28,10 @@
#include <fcntl.h>
#endif
#if HAVE_DECL_GETIFADDRS && HAVE_DECL_FREEIFADDRS
#include <ifaddrs.h>
#endif
#ifdef USE_POLL
#include <poll.h>
#endif
@@ -2050,7 +2054,11 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect)
continue;
}
// do not allow non-default ports, unless after 50 invalid addresses selected already
// Do not allow non-default ports, unless after 50 invalid
// addresses selected already. This is to prevent malicious peers
// from advertising themselves as a service on another host and
// port, causing a DoS attack as nodes around the network attempt
// to connect to it fruitlessly.
if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50)
continue;
@@ -2397,8 +2405,9 @@ NodeId CConnman::GetNewNodeId()
bool CConnman::Bind(const CService &addr, unsigned int flags, NetPermissionFlags permissions) {
if (!(flags & BF_EXPLICIT) && !IsReachable(addr))
if (!(flags & BF_EXPLICIT) && !IsReachable(addr)) {
return false;
}
bilingual_str strError;
if (!BindListenPort(addr, strError, permissions)) {
if ((flags & BF_REPORT_ERROR) && clientInterface) {
@@ -2407,7 +2416,7 @@ bool CConnman::Bind(const CService &addr, unsigned int flags, NetPermissionFlags
return false;
}
if (addr.IsRoutable() && fDiscover && !(flags & BF_DONT_ADVERTISE) && !(permissions & PF_NOBAN)) {
if (addr.IsRoutable() && fDiscover && !(flags & BF_DONT_ADVERTISE) && !NetPermissions::HasFlag(permissions, NetPermissionFlags::PF_NOBAN)) {
AddLocal(addr, LOCAL_BIND);
}

View File

@@ -30,7 +30,8 @@ enum NetPermissionFlags {
PF_NOBAN = (1U << 4) | PF_DOWNLOAD,
// Can query the mempool
PF_MEMPOOL = (1U << 5),
// Can request addrs without hitting a privacy-preserving cache
// Can request addrs without hitting a privacy-preserving cache, and send us
// unlimited amounts of addrs.
PF_ADDR = (1U << 7),
// True if the user did not specifically set fine grained permissions

View File

@@ -146,6 +146,13 @@ static constexpr uint32_t MAX_GETCFILTERS_SIZE = 1000;
static constexpr uint32_t MAX_GETCFHEADERS_SIZE = 2000;
/** the maximum percentage of addresses from our addrman to return in response to a getaddr message. */
static constexpr size_t MAX_PCT_ADDR_TO_SEND = 23;
/** The maximum rate of address records we're willing to process on average. Can be bypassed using
* the NetPermissionFlags::Addr permission. */
static constexpr double MAX_ADDR_RATE_PER_SECOND{0.1};
/** The soft limit of the address processing token bucket (the regular MAX_ADDR_RATE_PER_SECOND
* based increments won't go above this, but the MAX_ADDR_TO_SEND increment following GETADDR
* is exempt from this limit. */
static constexpr size_t MAX_ADDR_PROCESSING_TOKEN_BUCKET{MAX_ADDR_TO_SEND};
struct COrphanTx {
// When modifying, adapt the copy of this definition in tests/DoS_tests.
@@ -454,6 +461,16 @@ struct Peer {
/** Work queue of items requested by this peer **/
std::deque<CInv> m_getdata_requests GUARDED_BY(m_getdata_requests_mutex);
/** Number of addr messages that can be processed from this peer. Start at 1 to
* permit self-announcement. */
double m_addr_token_bucket{1.0};
/** When m_addr_token_bucket was last updated */
std::chrono::microseconds m_addr_token_timestamp{GetTime<std::chrono::microseconds>()};
/** Total number of addresses that were dropped due to rate limiting. */
std::atomic<uint64_t> m_addr_rate_limited{0};
/** Total number of addresses that were processed (excludes rate limited ones). */
std::atomic<uint64_t> m_addr_processed{0};
Peer(NodeId id) : m_id(id) {}
};
@@ -906,6 +923,8 @@ bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats) {
PeerRef peer = GetPeerRef(nodeid);
if (peer == nullptr) return false;
stats.m_misbehavior_score = WITH_LOCK(peer->m_misbehavior_mutex, return peer->m_misbehavior_score);
stats.m_addr_processed = peer->m_addr_processed.load();
stats.m_addr_rate_limited = peer->m_addr_rate_limited.load();
return true;
}
@@ -2305,6 +2324,9 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
bool fRelay = true;
vRecv >> nVersion >> nServiceInt >> nTime >> addrMe;
if (nTime < 0) {
nTime = 0;
}
nServices = ServiceFlags(nServiceInt);
if (!pfrom.IsInboundConn())
{
@@ -2364,10 +2386,16 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::WTXIDRELAY));
}
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::VERACK));
// Signal ADDRv2 support (BIP155).
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDADDRV2));
if (greatest_common_version >= 70016) {
// BIP155 defines addrv2 and sendaddrv2 for all protocol versions, but some
// implementations reject messages they don't know. As a courtesy, don't send
// it to nodes with a version before 70016, as no software is known to support
// BIP155 that doesn't announce at least that protocol version number.
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDADDRV2));
}
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::VERACK));
pfrom.nServices = nServices;
pfrom.SetAddrLocal(addrMe);
@@ -2429,6 +2457,9 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
// Get recent addresses
m_connman.PushMessage(&pfrom, CNetMsgMaker(greatest_common_version).Make(NetMsgType::GETADDR));
pfrom.fGetAddr = true;
// When requesting a getaddr, accept an additional MAX_ADDR_TO_SEND addresses in response
// (bypassing the MAX_ADDR_PROCESSING_TOKEN_BUCKET limit).
peer->m_addr_token_bucket += MAX_ADDR_TO_SEND;
}
if (!pfrom.IsInboundConn()) {
@@ -2540,6 +2571,17 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
return;
}
if (msg_type == NetMsgType::SENDADDRV2) {
if (pfrom.fSuccessfullyConnected) {
// Disconnect peers that send SENDADDRV2 message after VERACK; this
// must be negotiated between VERSION and VERACK.
pfrom.fDisconnect = true;
return;
}
pfrom.m_wants_addrv2 = true;
return;
}
if (!pfrom.fSuccessfullyConnected) {
LogPrint(BCLog::NET, "Unsupported message \"%s\" prior to verack from peer=%d\n", SanitizeString(msg_type), pfrom.GetId());
return;
@@ -2571,11 +2613,34 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
std::vector<CAddress> vAddrOk;
int64_t nNow = GetAdjustedTime();
int64_t nSince = nNow - 10 * 60;
// Update/increment addr rate limiting bucket.
const auto current_time = GetTime<std::chrono::microseconds>();
if (peer->m_addr_token_bucket < MAX_ADDR_PROCESSING_TOKEN_BUCKET) {
// Don't increment bucket if it's already full
const auto time_diff = std::max(current_time - peer->m_addr_token_timestamp, std::chrono::microseconds{0});
const double increment = std::chrono::duration<double>(time_diff).count() * MAX_ADDR_RATE_PER_SECOND;
peer->m_addr_token_bucket = std::min<double>(peer->m_addr_token_bucket + increment, MAX_ADDR_PROCESSING_TOKEN_BUCKET);
}
peer->m_addr_token_timestamp = current_time;
const bool rate_limited = !pfrom.HasPermission(NetPermissionFlags::PF_ADDR);
uint64_t num_proc = 0;
uint64_t num_rate_limit = 0;
Shuffle(vAddr.begin(), vAddr.end(), FastRandomContext());
for (CAddress& addr : vAddr)
{
if (interruptMsgProc)
return;
// Apply rate limiting.
if (rate_limited) {
if (peer->m_addr_token_bucket < 1.0) {
++num_rate_limit;
continue;
}
peer->m_addr_token_bucket -= 1.0;
}
// We only bother storing full nodes, though this may include
// things which we would not make an outbound connection to, in
// part because we may make feeler connections to them.
@@ -2589,6 +2654,7 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
// Do not process banned/discouraged addresses beyond remembering we received them
continue;
}
++num_proc;
bool fReachable = IsReachable(addr);
if (addr.nTime > nSince && !pfrom.fGetAddr && vAddr.size() <= 10 && addr.IsRoutable())
{
@@ -2599,6 +2665,15 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
if (fReachable)
vAddrOk.push_back(addr);
}
peer->m_addr_processed += num_proc;
peer->m_addr_rate_limited += num_rate_limit;
LogPrint(BCLog::NET, "Received addr: %u addresses (%u processed, %u rate-limited) from peer=%d%s\n",
vAddr.size(),
num_proc,
num_rate_limit,
pfrom.GetId(),
fLogIPs ? ", peeraddr=" + pfrom.addr.ToString() : "");
m_connman.AddNewAddresses(vAddrOk, pfrom.addr, 2 * 60 * 60);
if (vAddr.size() < 1000)
pfrom.fGetAddr = false;
@@ -2607,11 +2682,6 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
return;
}
if (msg_type == NetMsgType::SENDADDRV2) {
pfrom.m_wants_addrv2 = true;
return;
}
if (msg_type == NetMsgType::SENDHEADERS) {
LOCK(cs_main);
State(pfrom.GetId())->fPreferHeaders = true;

View File

@@ -32,6 +32,7 @@ static const bool DEFAULT_PEERBLOCKFILTERS = false;
/** Threshold for marking a node to be discouraged, e.g. disconnected and added to the discouragement filter. */
static const int DISCOURAGEMENT_THRESHOLD{100};
class PeerManager final : public CValidationInterface, public NetEventsInterface {
public:
PeerManager(const CChainParams& chainparams, CConnman& connman, BanMan* banman,
@@ -150,6 +151,8 @@ struct CNodeStateStats {
int nSyncHeight = -1;
int nCommonHeight = -1;
std::vector<int> vHeightInFlight;
uint64_t m_addr_processed = 0;
uint64_t m_addr_rate_limited = 0;
};
/** Get statistics from node state */

View File

@@ -1063,15 +1063,24 @@ CSubNet::CSubNet(const CNetAddr& addr, const CNetAddr& mask) : CSubNet()
CSubNet::CSubNet(const CNetAddr& addr) : CSubNet()
{
valid = addr.IsIPv4() || addr.IsIPv6();
if (!valid) {
switch (addr.m_net) {
case NET_IPV4:
case NET_IPV6:
valid = true;
assert(addr.m_addr.size() <= sizeof(netmask));
memset(netmask, 0xFF, addr.m_addr.size());
break;
case NET_ONION:
case NET_I2P:
case NET_CJDNS:
valid = true;
break;
case NET_INTERNAL:
case NET_UNROUTABLE:
case NET_MAX:
return;
}
assert(addr.m_addr.size() <= sizeof(netmask));
memset(netmask, 0xFF, addr.m_addr.size());
network = addr;
}
@@ -1083,6 +1092,21 @@ bool CSubNet::Match(const CNetAddr &addr) const
{
if (!valid || !addr.IsValid() || network.m_net != addr.m_net)
return false;
switch (network.m_net) {
case NET_IPV4:
case NET_IPV6:
break;
case NET_ONION:
case NET_I2P:
case NET_CJDNS:
case NET_INTERNAL:
return addr == network;
case NET_UNROUTABLE:
case NET_MAX:
return false;
}
assert(network.m_addr.size() == addr.m_addr.size());
for (size_t x = 0; x < addr.m_addr.size(); ++x) {
if ((addr.m_addr[x] & netmask[x]) != network.m_addr[x]) {
@@ -1094,18 +1118,35 @@ bool CSubNet::Match(const CNetAddr &addr) const
std::string CSubNet::ToString() const
{
assert(network.m_addr.size() <= sizeof(netmask));
std::string suffix;
uint8_t cidr = 0;
switch (network.m_net) {
case NET_IPV4:
case NET_IPV6: {
assert(network.m_addr.size() <= sizeof(netmask));
for (size_t i = 0; i < network.m_addr.size(); ++i) {
if (netmask[i] == 0x00) {
break;
uint8_t cidr = 0;
for (size_t i = 0; i < network.m_addr.size(); ++i) {
if (netmask[i] == 0x00) {
break;
}
cidr += NetmaskBits(netmask[i]);
}
cidr += NetmaskBits(netmask[i]);
suffix = strprintf("/%u", cidr);
break;
}
case NET_ONION:
case NET_I2P:
case NET_CJDNS:
case NET_INTERNAL:
case NET_UNROUTABLE:
case NET_MAX:
break;
}
return network.ToString() + strprintf("/%u", cidr);
return network.ToString() + suffix;
}
bool CSubNet::IsValid() const
@@ -1115,7 +1156,19 @@ bool CSubNet::IsValid() const
bool CSubNet::SanityCheck() const
{
if (!(network.IsIPv4() || network.IsIPv6())) return false;
switch (network.m_net) {
case NET_IPV4:
case NET_IPV6:
break;
case NET_ONION:
case NET_I2P:
case NET_CJDNS:
return true;
case NET_INTERNAL:
case NET_UNROUTABLE:
case NET_MAX:
return false;
}
for (size_t x = 0; x < network.m_addr.size(); ++x) {
if (network.m_addr[x] & ~netmask[x]) return false;

View File

@@ -462,11 +462,33 @@ class CSubNet
bool SanityCheck() const;
public:
/**
* Construct an invalid subnet (empty, `Match()` always returns false).
*/
CSubNet();
/**
* Construct from a given network start and number of bits (CIDR mask).
* @param[in] addr Network start. Must be IPv4 or IPv6, otherwise an invalid subnet is
* created.
* @param[in] mask CIDR mask, must be in [0, 32] for IPv4 addresses and in [0, 128] for
* IPv6 addresses. Otherwise an invalid subnet is created.
*/
CSubNet(const CNetAddr& addr, uint8_t mask);
/**
* Construct from a given network start and mask.
* @param[in] addr Network start. Must be IPv4 or IPv6, otherwise an invalid subnet is
* created.
* @param[in] mask Network mask, must be of the same type as `addr` and not contain 0-bits
* followed by 1-bits. Otherwise an invalid subnet is created.
*/
CSubNet(const CNetAddr& addr, const CNetAddr& mask);
//constructor for single ip subnet (<ipv4>/32 or <ipv6>/128)
/**
* Construct a single-host subnet.
* @param[in] addr The sole address to be contained in the subnet, can also be non-IPv[46].
*/
explicit CSubNet(const CNetAddr& addr);
bool Match(const CNetAddr &addr) const;

View File

@@ -51,6 +51,7 @@
#include <QThread>
#include <QTimer>
#include <QTranslator>
#include <QtGlobal>
#if defined(QT_STATICPLUGIN)
#include <QtPlugin>
@@ -466,6 +467,13 @@ int GuiMain(int argc, char* argv[])
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
#if (QT_VERSION <= QT_VERSION_CHECK(5, 9, 8)) && defined(Q_OS_MACOS)
const auto os_name = QSysInfo::prettyProductName();
if (os_name.startsWith("macOS 11") || os_name.startsWith("macOS 10.16")) {
QApplication::setStyle("fusion");
}
#endif
BitcoinApplication app;
/// 2. Parse command-line options. We do this after qt in order to show an error if there are problems parsing these

View File

@@ -3,6 +3,7 @@
<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>
@@ -28,7 +29,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="gl">locale/bitcoin_gl.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>
@@ -39,6 +43,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>
@@ -55,6 +60,7 @@
<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>
@@ -74,6 +80,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>

View File

@@ -845,7 +845,7 @@ void BitcoinGUI::showDebugWindowActivateConsole()
void BitcoinGUI::showHelpMessageClicked()
{
helpMessageDialog->show();
GUIUtil::bringToFront(helpMessageDialog);
}
#ifdef ENABLE_WALLET

View File

@@ -7,140 +7,135 @@
<x>0</x>
<y>0</y>
<width>364</width>
<height>213</height>
<height>249</height>
</rect>
</property>
<property name="windowTitle">
<string>Create Wallet</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>10</x>
<y>170</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QLineEdit" name="wallet_name_line_edit">
<property name="geometry">
<rect>
<x>120</x>
<y>20</y>
<width>231</width>
<height>24</height>
</rect>
</property>
<property name="placeholderText">
<string>Wallet</string>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>101</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Wallet Name</string>
</property>
</widget>
<widget class="QCheckBox" name="encrypt_wallet_checkbox">
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>171</width>
<height>22</height>
</rect>
</property>
<property name="toolTip">
<string>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</string>
</property>
<property name="text">
<string>Encrypt Wallet</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
<widget class="QLabel" name="advanced_options_label">
<property name="geometry">
<rect>
<x>20</x>
<y>90</y>
<width>130</width>
<height>21</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">font-weight:bold;</string>
</property>
<property name="text">
<string>Advanced options</string>
</property>
</widget>
<widget class="QCheckBox" name="disable_privkeys_checkbox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>115</y>
<width>171</width>
<height>22</height>
</rect>
</property>
<property name="toolTip">
<string>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.</string>
</property>
<property name="text">
<string>Disable Private Keys</string>
</property>
</widget>
<widget class="QCheckBox" name="blank_wallet_checkbox">
<property name="geometry">
<rect>
<x>20</x>
<y>135</y>
<width>220</width>
<height>22</height>
</rect>
</property>
<property name="toolTip">
<string>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.</string>
</property>
<property name="text">
<string>Make Blank Wallet</string>
</property>
</widget>
<widget class="QCheckBox" name="descriptor_checkbox">
<property name="geometry">
<rect>
<x>20</x>
<y>155</y>
<width>171</width>
<height>22</height>
</rect>
</property>
<property name="toolTip">
<string>Use descriptors for scriptPubKey management</string>
</property>
<property name="text">
<string>Descriptor Wallet</string>
</property>
</widget>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="wallet_name_label">
<property name="text">
<string>Wallet Name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="wallet_name_line_edit">
<property name="minimumSize">
<size>
<width>262</width>
<height>0</height>
</size>
</property>
<property name="placeholderText">
<string>Wallet</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="encrypt_wallet_checkbox">
<property name="toolTip">
<string>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</string>
</property>
<property name="text">
<string>Encrypt Wallet</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_1">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Advanced Options</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_groupbox">
<item>
<widget class="QCheckBox" name="disable_privkeys_checkbox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="toolTip">
<string>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.</string>
</property>
<property name="text">
<string>Disable Private Keys</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="blank_wallet_checkbox">
<property name="toolTip">
<string>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.</string>
</property>
<property name="text">
<string>Make Blank Wallet</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="descriptor_checkbox">
<property name="toolTip">
<string>Use descriptors for scriptPubKey management</string>
</property>
<property name="text">
<string>Descriptor Wallet</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>wallet_name_line_edit</tabstop>

View File

@@ -504,7 +504,7 @@
</layout>
</item>
<item>
<widget class="QListView" name="listTransactions">
<widget class="TransactionOverviewWidget" name="listTransactions">
<property name="styleSheet">
<string notr="true">QListView { background: transparent; }</string>
</property>
@@ -517,9 +517,15 @@
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
@@ -544,6 +550,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>TransactionOverviewWidget</class>
<extends>QListView</extends>
<header>qt/transactionoverviewwidget.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -734,8 +734,11 @@ bool SetStartOnSystemStartup(bool fAutoStart) { return false; }
void setClipboard(const QString& str)
{
QApplication::clipboard()->setText(str, QClipboard::Clipboard);
QApplication::clipboard()->setText(str, QClipboard::Selection);
QClipboard* clipboard = QApplication::clipboard();
clipboard->setText(str, QClipboard::Clipboard);
if (clipboard->supportsSelection()) {
clipboard->setText(str, QClipboard::Selection);
}
}
fs::path qstringToBoostPath(const QString &path)

View File

@@ -3,11 +3,11 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Right-click to edit address or label</translation>
<translation>Regsklik om adres of etiket te verander</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Create a new address</translation>
<translation>Skep n nuwe adres</translation>
</message>
<message>
<source>&amp;New</source>
@@ -69,6 +69,11 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Hierdie is die adresse waar u Bitcoins sal ontvang. Ons beveel aan dat u 'n nuwe adres kies vir elke transaksie</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Copy Address</translation>
@@ -477,6 +482,10 @@
<source>Up to date</source>
<translation>Up to date</translation>
</message>
<message>
<source>&amp;Load PSBT from file...</source>
<translation>Laai PSBT van lêer....</translation>
</message>
<message>
<source>Node window</source>
<translation>Node window</translation>
@@ -798,6 +807,10 @@
<source>Create Wallet</source>
<translation>Create Wallet</translation>
</message>
<message>
<source>Wallet</source>
<translation>Wallet</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Wallet Name</translation>
@@ -830,7 +843,7 @@
<source>Create</source>
<translation>Create</translation>
</message>
</context>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3667,10 +3680,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%s is set very high!</source>
<translation>%s is set very high!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>

View File

@@ -75,7 +75,7 @@
</message>
<message>
<source>&amp;Edit</source>
<translation> &amp;</translation>
<translation> &amp;</translation>
</message>
<message>
<source>Export Address List</source>
@@ -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>
<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>PSBTOperationsDialog</name>
@@ -321,6 +523,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>
@@ -330,12 +540,28 @@
</context>
<context>
<name>ReceiveCoinsDialog</name>
<message>
<source>Copy amount</source>
<translation> </translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Amount:</source>
<translation></translation>
</message>
<message>
<source>Wallet:</source>
<translation></translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Date</source>
<translation></translation>
</message>
<message>
<source>Label</source>
<translation> </translation>
@@ -347,6 +573,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>
@@ -366,12 +616,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>
@@ -383,13 +645,25 @@
</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>
<translation></translation>
</message>
<message>
<source>Address</source>
@@ -397,7 +671,7 @@
</message>
<message>
<source>Exporting Failed</source>
<translation> </translation>
<translation> </translation>
</message>
</context>
<context>
@@ -405,13 +679,25 @@
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>WalletFrame</name>
</context>
<message>
<source>Create a new wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>WalletModel</name>
</context>
<message>
<source>default wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
@@ -422,6 +708,10 @@
<source>Export the data in the current tab to a file</source>
<translation> </translation>
</message>
<message>
<source>Error</source>
<translation></translation>
</message>
</context>
<context>
<name>bitcoin-core</name>

View File

@@ -89,7 +89,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>Export Address List</source>
<translation>تصدير قائمة العناوين</translation>
<translation>صدّر قائمة العناوين</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
@@ -135,7 +135,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>Show passphrase</source>
<translation>إظهار كلمة المرور</translation>
<translation>أظهر كلمة المرور</translation>
</message>
<message>
<source>Encrypt wallet</source>
@@ -443,10 +443,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Processing blocks on disk...</source>
<translation>معالجة الكتل على القرص...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation><numerusform>Processed %n blocks of transaction history.</numerusform><numerusform>Processed %n block of transaction history.</numerusform><numerusform>Processed %n blocks of transaction history.</numerusform><numerusform>Processed %n blocks of transaction history.</numerusform><numerusform>Processed %n blocks of transaction history.</numerusform><numerusform>تمت معالجة٪ n من كتل سجل المعاملات.</numerusform></translation>
</message>
<message>
<source>%1 behind</source>
<translation>خلف %1</translation>
@@ -837,6 +833,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create Wallet</source>
<translation>إنشاء محفظة</translation>
</message>
<message>
<source>Wallet</source>
<translation>محفظة</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>إسم المحفظة</translation>
@@ -849,6 +849,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Encrypt Wallet</source>
<translation>تشفير محفظة</translation>
</message>
<message>
<source>Advanced Options</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>
@@ -877,6 +881,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create</source>
<translation>إنشاء</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>تم تجميعه بدون دعم sqlite (مطلوب لمحافظ الواصف)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1088,6 +1096,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Hide</source>
<translation>إخفاء</translation>
</message>
<message>
<source>Esc</source>
<translation>خروج</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>مجهول. مزامنة الرؤوس (%1, %2%)...</translation>
@@ -1116,7 +1128,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>default wallet</source>
<translation>محفظة إفتراضية</translation>
<translation>المحفظة الإفتراضية</translation>
</message>
<message>
<source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
@@ -1209,6 +1221,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>MiB</source>
<translation>ميجا بايت</translation>
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation>(0 = تلقائي, &lt;0 = اترك هذا العدد من الأنوية حر)</translation>
</message>
<message>
<source>W&amp;allet</source>
<translation>&amp;محفظة</translation>
@@ -1221,10 +1237,18 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Enable coin &amp;control features</source>
<translation>تفعيل ميزات التحكم في العملة</translation>
</message>
<message>
<source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source>
<translation>اذا قمت بتعطيل الانفاق من النقود الغير مؤكدة، النقود من معاملة غير مؤكدة لن تكون قابلة للاستعمال حتى تحتوي تلك المعاملة على الأقل على تأكيد واحد. هذا أيضا يؤثر على كيفية حساب رصيدك.</translation>
</message>
<message>
<source>&amp;Spend unconfirmed change</source>
<translation>دفع الفكة غير المؤكدة</translation>
</message>
<message>
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
<translation>فتح منفذ خادم البتكوين تلقائيا على الموجه. هذا فقط يعمل عندما يكون الموجه الخاص بك يدعم UPnP ومفعل ايضا.</translation>
</message>
<message>
<source>Map port using &amp;UPnP</source>
<translation>ربط المنفذ باستخدام UPnP</translation>
@@ -1539,6 +1563,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source> * Sends %1 to %2</source>
<translation>* يرسل %1 إلى %2</translation>
</message>
<message>
<source>Unable to calculate transaction fee or total transaction amount.</source>
<translation>غير قادر على حساب رسوم المعاملة أو إجمالي مبلغ المعاملة.</translation>
</message>
<message>
<source>Pays transaction fee: </source>
<translation>دفع رسوم المعاملة:</translation>
</message>
<message>
<source>Total Amount</source>
<translation>القيمة الإجمالية</translation>
@@ -1547,7 +1579,31 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>or</source>
<translation>أو</translation>
</message>
</context>
<message>
<source>Transaction is missing some information about inputs.</source>
<translation>تفتقد المعاملة إلى بعض المعلومات حول المدخلات </translation>
</message>
<message>
<source>Transaction still needs signature(s).</source>
<translation>المعاملة ما زالت تحتاج التوقيع.</translation>
</message>
<message>
<source>(But this wallet cannot sign transactions.)</source>
<translation>.لكن هذه المخفضة لا يمكنها توقيع للمعاملات</translation>
</message>
<message>
<source>(But this wallet does not have the right keys.)</source>
<translation>لكن هذه المحفظة لا تحتوي على المفاتيح الصحيحة.</translation>
</message>
<message>
<source>Transaction is fully signed and ready for broadcast.</source>
<translation> الصفقة موقعة بالكامل وجاهزة للبث</translation>
</message>
<message>
<source>Transaction status is unknown.</source>
<translation>حالة المعاملة غير معروفة.</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1562,6 +1618,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>URI handling</source>
<translation>التعامل مع العنوان</translation>
</message>
<message>
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' هو ليس عنوان URL صالح. استعمل '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>إذا كنت تتلقى هذا الخطأ فيجب عليك الطلب من التاجر توفير عنوان URI يتوافق مع BIP21.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>عنوان الدفع غير صالح %1</translation>
@@ -1695,6 +1767,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Error encoding URI into QR Code.</source>
<translation>خطأ في ترميز العنوان إلى الرمز المربع.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>دعم كود الـQR غير متوفر.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>حفظ رمز الاستجابة السريعة QR</translation>
@@ -1730,6 +1806,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Datadir</source>
<translation>دليل البيانات</translation>
</message>
<message>
<source>Blocksdir</source>
<translation>ملف الكتل blocksdir</translation>
</message>
<message>
<source>Startup time</source>
<translation>وقت البدء</translation>
@@ -1814,6 +1894,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>تعيين AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>وكيل المستخدم</translation>
@@ -1822,6 +1910,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Node window</source>
<translation>نافذة Node </translation>
</message>
<message>
<source>Current block height</source>
<translation>ارتفاع الكتلة الحالي</translation>
</message>
<message>
<source>Decrease font size</source>
<translation>تصغير حجم الخط</translation>
@@ -2017,6 +2109,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>و إنشاء عناوين استقبال جديدة</translation>
@@ -2029,6 +2129,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Clear</source>
<translation>مسح</translation>
</message>
<message>
<source>Native segwit addresses (aka Bech32 or BIP-173) reduce your transaction fees later on and offer better protection against typos, but old wallets don't support them. When unchecked, an address compatible with older wallets will be created instead.</source>
<translation>عناوين segwit (المعروفة بـBech32 أو BIP-173) تخفض من رسوم المعاملة لاحقا وتوفر حماية أفضل ضد الأخطاء المطبعية، لكن المحافظ القديمة لا تدعمهم. عندما يكون هذا الخيار غير محدد، سوف يتم إنشاء عنوان متوافق مع المحافظ القديمة عوضا عن ذلك.</translation>
</message>
<message>
<source>Generate native segwit (Bech32) address</source>
<translation>توليد عنوان segwit ـ (Bech32)</translation>
</message>
<message>
<source>Requested payments history</source>
<translation>سجل طلبات الدفع</translation>
@@ -2084,6 +2192,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Amount:</source>
<translation>القيمة :</translation>
</message>
<message>
<source>Label:</source>
<translation>وسم:</translation>
</message>
<message>
<source>Message:</source>
<translation>الرسائل</translation>
@@ -2206,10 +2318,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Choose...</source>
<translation>إختر …</translation>
</message>
<message>
<source>Using the fallbackfee can result in sending a transaction that will take several hours or days (or never) to confirm. Consider choosing your fee manually or wait until you have validated the complete chain.</source>
<translation>يمكن أن يؤدي استخدام الرسوم الاحتياطية إلى إرسال معاملة تستغرق عدة ساعات أو أيام (أو أبدًا) للتأكيد. ضع في اعتبارك اختيار الرسوم يدويًا أو انتظر حتى تتحقق من صحة السلسلة الكاملة.</translation>
</message>
<message>
<source>Warning: Fee estimation is currently not possible.</source>
<translation>تحذير: تقدير الرسوم غير ممكن في الوقت الحالي.</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>حدد رسوم مخصصة لكل كيلوبايت (1000 بايت) من حجم المعاملة الافتراضي.
ملاحظة: باعتبار أن الرسوم تحسب على أساس لكل-بايت، رسوم قدرها "100 ساتوشي لكل كيلوبايت" لحجم معاملة يتكون من 500 بايت (نصف كيلوبايت) سوف يؤدي في النهاية الى رسوم قدرها 50 ساتوشي فقط.</translation>
</message>
<message>
<source>per kilobyte</source>
<translation>لكل كيلوبايت</translation>
@@ -2246,6 +2370,18 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>
</message>
<message>
<source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
<translation>رسوم قليلة جدا من الممكن أن تؤدي الى معاملة لن تتأكد أبدا (اقرأ التلميح).</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation>هدف وقت التأكيد:</translation>
@@ -2306,10 +2442,19 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 كثلة)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>إنشاء غير موقع
 </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>
@@ -2326,6 +2471,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>معاملة موقعة جزئيًا (ثنائي) (* .psbt)</translation>
</message>
<message>
<source>PSBT saved</source>
<translation>تم حفظ PSBT</translation>
</message>
<message>
<source>or</source>
<translation>أو</translation>
@@ -2334,6 +2483,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>يمكنك زيادة الرسوم لاحقًا (بإشارة الإستبدال بواسطة الرسوم، BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>رجاء، راجع معاملتك.</translation>
</message>
<message>
<source>Transaction fee</source>
<translation>رسوم المعاملة</translation>
@@ -2346,14 +2499,26 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>تأكيد الإرسال Coins</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>أكد اقتراح المعاملة</translation>
</message>
<message>
<source>Send</source>
<translation>إرسال</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>رصيد للاستعراض فقط:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>عنوان المستلم غير صالح. يرجى إعادة الفحص.</translation>
@@ -2398,6 +2563,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Confirm custom change address</source>
<translation>تأكيد تغيير العنوان الفكة</translation>
</message>
<message>
<source>The address you selected for change is not part of this wallet. Any or all funds in your wallet may be sent to this address. Are you sure?</source>
<translation>العنوان الذي قمت بتحديده للتغيير ليس جزءا من هذه المحفظة. أي أو جميع الأموال في محفظتك قد يتم إرسالها لهذا العنوان. هل أنت متأكد؟</translation>
</message>
<message>
<source>(no label)</source>
<translation>(بدون وسم)</translation>
@@ -2441,6 +2610,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>
@@ -2503,6 +2676,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>&amp;Sign Message</source>
<translation>&amp;توقيع الرسالة</translation>
</message>
<message>
<source>You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to.</source>
<translation>تستطيع توقيع رسائل/اتفاقات مع عناوينك لإثبات أنه بإمكانك استقبال بتكوين مرسل إليهم. كن حذرا من عدم توقيع أي شيء غامض أو عشوائي، كهجمات التصيد التي قد تحاول خداعك لتوقيع هويتك لديهم. وقع البيانات المفصلة بالكامل والتي أنت توافق عليها فقط.</translation>
</message>
<message>
<source>The Bitcoin address to sign the message with</source>
<translation>عنوان البتكوين لتوقيع الرسالة به</translation>
@@ -2555,10 +2732,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>&amp;Verify Message</source>
<translation>&amp;تحقق رسالة</translation>
</message>
<message>
<source>Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction!</source>
<translation>أدخل عنوان المتلقي، راسل (تأكد من نسخ فواصل الأسطر، الفراغات، الخ.. تماما) والتوقيع أسفله لتأكيد الرسالة. كن حذرا من عدم قراءة داخل التوقيع أكثر مما هو موقع بالرسالة نفسها، لتجنب خداعك بهجوم man-in-the-middle. لاحظ أنه هذا لاثبات أن الجهة الموقعة تستقبل مع العنوان فقط، لا تستطيع اثبات الارسال لأي معاملة.</translation>
</message>
<message>
<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>
@@ -2591,6 +2780,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>
@@ -2745,10 +2938,18 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Transaction total size</source>
<translation>الحجم الكلي للمعاملات</translation>
</message>
<message>
<source>Transaction virtual size</source>
<translation>حجم المعاملة الافتراضي</translation>
</message>
<message>
<source>Output index</source>
<translation>مؤشر المخرجات</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation>(لم يتم التحقق من الشهادة)</translation>
</message>
<message>
<source>Merchant</source>
<translation>تاجر</translation>
@@ -2883,6 +3084,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Whether or not a watch-only address is involved in this transaction.</source>
<translation>ما إذا كان العنوان المشاهدة فقط متضمنًا في هذه المعاملة أم لا.</translation>
</message>
<message>
<source>User-defined intent/purpose of the transaction.</source>
<translation>تحديد سبب المعاملة من المستخدم</translation>
</message>
<message>
<source>Amount removed from or added to balance.</source>
<translation>المبلغ الذي أزيل أو أضيف الى الرصيد</translation>
@@ -3060,13 +3265,29 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Close wallet</source>
<translation>اغلق المحفظة</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>
</message>
<message>
<source>Close all wallets</source>
<translation>إغلاق جميع المحافظ ...</translation>
</message>
</context>
<message>
<source>Are you sure you wish to close all wallets?</source>
<translation>هل أنت متأكد من رغبتك في اغلاق جميع المحافظ؟</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>No wallet has been loaded.
Go to File &gt; Open Wallet to load a wallet.
- OR -</source>
<translation>لم يتم تحميل أية محافظ.
اذهب الى ملف &gt; افتح محفظة لتحميل محفظة.
- أو -</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>إنشاء محفظة جديدة</translation>
@@ -3090,6 +3311,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Do you want to increase the fee?</source>
<translation>هل تريد زيادة الرسوم؟</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>هل تريد صياغة معاملة مع زيادة في الرسوم؟</translation>
</message>
<message>
<source>Current fee:</source>
<translation>الأجر الحالي:</translation>
@@ -3106,6 +3331,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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>
@@ -3116,7 +3349,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>default wallet</source>
<translation>المحفظة إفتراضية</translation>
<translation>المحفظة الإفتراضية</translation>
</message>
</context>
<context>
@@ -3133,6 +3366,26 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Error</source>
<translation>خطأ</translation>
</message>
<message>
<source>Unable to decode PSBT from clipboard (invalid base64)</source>
<translation>تعذر فك تشفير PSBT من الحافظة (base64 غير صالح)</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>تحميل بيانات المعاملة</translation>
</message>
<message>
<source>Partially Signed Transaction (*.psbt)</source>
<translation>معاملة موقعة جزئيا (psbt.*)</translation>
</message>
<message>
<source>PSBT file must be smaller than 100 MiB</source>
<translation>ملف PSBT يجب أن يكون أصغر من 100 ميجابايت</translation>
</message>
<message>
<source>Unable to decode PSBT</source>
<translation>غير قادر على فك تشفير PSBT</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>نسخ احتياط للمحفظة</translation>
@@ -3160,6 +3413,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation>تم تكوين تقليم أقل من الحد الأدنى %d ميجابايت. من فضلك استعمل رقم أعلى.</translation>
</message>
<message>
<source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
<translation>تقليم: اخر مزامنة للمحفظة كانت قبل البيانات الملقمة. تحتاج الى - اعادة فهرسة (قم بتنزيل سلسلة الكتل بأكملها مرة أخرى في حال تم تقليم عقدة)</translation>
</message>
<message>
<source>Pruning blockstore...</source>
<translation>تجريد مخزن الكتل...</translation>
@@ -3180,14 +3441,66 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
<translation>لا يمكن توفير اتصالات محددة ولابد أن يكون لدى addrman اتصالات صادرة في نفس الوقت.</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! جميع المفاتيح قرأت بشكل صحيح، لكن بيانات المعاملة أو إدخالات سجل العناوين قد تكون مفقودة أو غير صحيحة.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>رجاء تأكد من أن التاريخ والوقت في حاسوبك صحيحان! اذا كانت ساعتك خاطئة، %s لن يعمل كما بصورة صحيحة.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>يرجى المساهمة إذا وجدت %s مفيداً. تفضل بزيارة %s لمزيد من المعلومات حول البرنامج.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabse: فشل في تحضير التصريح لجلب محفظة sqlite اصدار المخطط: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
<translation>SQLiteDatabase: فشل في تحضير التصريح لجلب التطبيق id: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation>SQLiteDatabase: اصدار مخطط لمحفظة sqlite غير معروف %d. فقط اصدار %d مدعوم.</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation>قاعدة بيانات الكتل تحتوي على كتلة يبدو أنها من المستقبل. قد يكون هذا بسبب أن التاريخ والوقت في حاسوبك قم ضبط بشكل غير صحيح. قم بإعادة بناء قاعدة بيانات الكتل في حال كنت متأكد من أن التاريخ والوقت قد تم ضبطهما بشكل صحيح.</translation>
</message>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation>هذه بنية للتجربة ما قبل-الاصدار - استخدمها على مسؤوليتك الخاصة - لا تستخدمها للتعدين أو لتطبيقات التجارة.</translation>
</message>
<message>
<source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
<translation>هذه رسوم المعاملة يمكنك التخلص منها إذا كان المبلغ أصغر من الغبار عند هذا المستوى</translation>
</message>
<message>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
<translation>غير قادر على اعادة الكتل. سوف تحتاج الى اعادة بناء قاعدة البيانات باستخدام - reindex-chainstate</translation>
</message>
<message>
<source>Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain</source>
<translation>تعذر إرجاع قاعدة البيانات إلى حالة ما قبل الانقسام. سوف تحتاج إلى إعادة تنزيل blockchain</translation>
</message>
<message>
<source>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</source>
<translation>تحذير: يبدو أن الشبكة لا توافق تمامًا! يبدو أن بعض عمال المناجم يواجهون مشكلات.</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation>تحذير: لا يبدو أننا نتفق تمامًا مع أقراننا! قد تحتاج إلى الترقية ، أو قد تحتاج العقد الأخرى إلى الترقية.</translation>
</message>
<message>
<source>-maxmempool must be at least %d MB</source>
<translation>-الحد الأقصى للذاكرة على الأقل %d ميغابايت</translation>
</message>
<message>
<source>Cannot resolve -%s address: '%s'</source>
<translation>لا يمكن الحل - %s العنوان: '%s'</translation>
</message>
<message>
<source>Change index out of range</source>
<translation>فهرس الفكة خارج النطاق</translation>
@@ -3204,6 +3517,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Do you want to rebuild the block database now?</source>
<translation>هل تريد إعادة بناء قاعدة بيانات الكتل الآن؟</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation>Error initializing block database</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation>Error initializing wallet database environment %s!</translation>
</message>
<message>
<source>Error loading %s</source>
<translation>خطأ في تحميل %s</translation>
@@ -3236,6 +3557,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Failed to rescan the wallet during initialization</source>
<translation>فشل في اعادة مسح المحفظة خلال عملية التهيئة.</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation>فشل في التحقق من قاعدة البيانات</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation> تم تجاهل تعريف مكرر -wallet %s</translation>
</message>
<message>
<source>Importing...</source>
<translation>إستيراد...</translation>
@@ -3248,6 +3577,62 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation>فشل بالتحقق في اختبار التعقل. تم إيقاف %s.</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation> إذن غير صالح لالند للند: '%s' </translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation>مبلغ غير صحيح -%s=: '%s'</translation>
</message>
<message>
<source>Invalid amount for -discardfee=&lt;amount&gt;: '%s'</source>
<translation>مبلغ غير صحيح -discardfee=: '%s'</translation>
</message>
<message>
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>مبلغ غير صحيح -fallbackfee=: '%s'</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation>SQLiteDatabase: فشل في تحضير التصريح لجلب التطبيق id: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch the application id: %s</source>
<translation>SQLiteDatabase: Failed to fetch the application id: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation>SQLiteDatabase: Failed to prepare statement to verify database: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation>SQLiteDatabase: Failed to read database verification error: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation>SQLiteDatabase: Unexpected application id. Expected %u, got %u</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Specified blocks directory "%s" does not exist.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>عنوان غير صحيح : '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Unknown change type '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>تحديث قاعدة بيانات txindex</translation>
</message>
<message>
<source>Loading P2P addresses...</source>
<translation>تحميل عناوين P2P...</translation>
@@ -3280,14 +3665,30 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>The source code is available from %s.</source>
<translation>شفرة المصدر متاحة من %s.</translation>
</message>
<message>
<source>Transaction fee and change calculation failed</source>
<translation>حساب عمولة المعاملة والصرف فشل</translation>
</message>
<message>
<source>Unable to bind to %s on this computer. %s is probably already running.</source>
<translation>تعذر الربط مع %s على هذا الكمبيوتر. %s على الأغلب يعمل مسبقا.</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation> غير قادر على توليد مفاتيح.</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation>Unsupported logging category %s=%s.</translation>
</message>
<message>
<source>Upgrading UTXO database</source>
<translation>ترقية قاعدة بيانات UTXO</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation>User Agent comment (%s) contains unsafe characters.</translation>
</message>
<message>
<source>Verifying blocks...</source>
<translation>التحقق من الكتل...</translation>
@@ -3296,14 +3697,50 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation>يلزم إعادة كتابة المحفظة: إعادة تشغيل %s لإكمال العملية</translation>
</message>
<message>
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Error: Listening for incoming connections failed (listen returned error %s)</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</translation>
</message>
<message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>قيمة غير صالحة لـ -maxtxfee=&lt;amount&gt;: '%s' (يجب أن تحتوي على الحد الأدنى للعمولة من %s على الأقل لتجنب المعاملات العالقة.</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>قيمة المعاملة صغيرة جدًا ولا يمكن إرسالها بعد خصم الرسوم</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</translation>
</message>
<message>
<source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
<translation>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>تحتاج إلى إعادة إنشاء قاعدة البيانات باستخدام -reindex للعودة إلى الوضعية الغير مجردة. هذا سوف يعيد تحميل سلسلة الكتل بأكملها</translation>
</message>
<message>
<source>A fatal internal error occurred, see debug.log for details</source>
<translation>A fatal internal error occurred, see debug.log for details</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation>Cannot set -peerblockfilters without -blockfilterindex.</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation>تحذير: مساحة القرص منخفضة</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation>خطأ في القراءة من قاعدة البيانات ، والتوقف.</translation>
@@ -3312,10 +3749,78 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Error upgrading chainstate database</source>
<translation>خطأ في ترقية قاعدة بيانات chainstate</translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation>خطأ : مساحة القرص منخفضة ل %s</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation>Error: Keypool ran out, please call keypoolrefill first</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation>Fee rate (%s) is lower than the minimum fee rate setting (%s)</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>عنوان اونيون غير صحيح : '%s'</translation>
</message>
<message>
<source>Invalid -proxy address or hostname: '%s'</source>
<translation>Invalid -proxy address or hostname: '%s'</translation>
</message>
<message>
<source>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</source>
<translation>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</translation>
</message>
<message>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation>Invalid netmask specified in -whitelist: '%s'</translation>
</message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>Need to specify a port with -whitebind: '%s'</translation>
</message>
<message>
<source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
<translation>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Prune mode is incompatible with -blockfilterindex.</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation>Reducing -maxconnections from %d to %d, because of system limitations.</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation>لم يتم التعرف على القسم  [%s]</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation>فشل توقيع المعاملة</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation>ملف المحفظة المحدد "%s" غير موجود
</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation>ملف المحفظة المحدد "%s" غير موجود
</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation>Specified -walletdir "%s" is not a directory</translation>
</message>
<message>
<source>The specified config file %s does not exist
</source>
<translation>ملف التكوين المحدد %s غير موجود
</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation>قيمة المعاملة صغيرة جدا لدفع الأجر</translation>
@@ -3336,14 +3841,34 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation>يتعذر الربط مع %s على هذا الكمبيوتر (الربط انتج خطأ %s)</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation>Unable to create the PID file '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation>غير قادر على توليد مفاتيح أولية</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation>قيمة -blockfilterindex  مجهولة %s.</translation>
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>التحقق من المحفظة (المحافظ)...</translation>
</message>
<message>
<source>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
<translation>-maxtxfee الموضوع عالي جدا! رسوم بهذا الحجم من الممكن أن تدفع على معاملة.</translation>
</message>
<message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation>هذه هي رسوم المعاملة التي قد تدفعها عندما تكون عملية حساب الرسوم غير متوفرة.</translation>
</message>
<message>
<source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
<translation>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</translation>
</message>
<message>
<source>%s is set very high!</source>
<translation>%s عالٍ جداً</translation>
@@ -3360,6 +3885,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation>هذه هي اقل قيمة من العمولة التي تدفعها عند كل عملية تحويل للأموال.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation>هذه هي رسوم تحويل الأموال التي ستدفعها إذا قمت بتحويل الأموال.</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation>يجب ألا تكون قيمة المعاملة سلبية</translation>
@@ -3372,10 +3901,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Transaction must have at least one recipient</source>
<translation>يجب أن تحتوي المعاملة على مستلم واحد على الأقل</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation>شبكة مجهولة عرفت حددت في -onlynet: '%s'</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation>الرصيد غير كافي</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation>عملية حساب الرسوم فشلت. الرسوم الاحتياطية غير مفعلة. انتظر عدة كتل أو مكن خيار الرسوم الاحتياطية.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>تحذير: تم اكتشاف مفاتيح خاصة في المحفظة {%s} مع مفاتيح خاصة موقفة.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>لايمكن الكتابة على دليل البيانات '%s'؛ تحقق من السماحيات.</translation>

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

@@ -0,0 +1,467 @@
<TS language="az" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Ünvana ya etiketə düzəliş etmək üçün sağ düyməsi ilə klikləyin</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Yeni bir ünvan yaradın</translation>
</message>
<message>
<source>&amp;New</source>
<translation>&amp;Yeni</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>Hazırki seçilmiş ünvanı sistem lövhəsinə kopyalayın</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation>&amp;Kopyala</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation>Bağla</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>Hazırki seçilmiş ünvanı siyahıdan silin</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əkdən əvvəl həmişə miqdarı göndəriləcək ünvanı yoxlayın.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Bunlar ödəniş almaq üçün Bitcoin ünvanlarınızdır. Yeni ünvan yaratmaq üçün alacaqlar vərəqində 'Yeni alacaq ünvan yarat' düyməsini istifadə edin.
Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</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>Cüzdanı şifrələyin</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation>Bu əməliyyat, cüzdanın kilidini açmaq üçün cüzdan şifrə ifadəsinə ehtiyac duyur.</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation>Cüzdanın kilidini ın</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation>Bu əməliyyat, cüzdanın şifrəsini açmaq üçün cüzdan şifrə ifadəsinə ehtiyac duyur.</translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation>Cüzdanın şifrəsini ın</translation>
</message>
<message>
<source>Change passphrase</source>
<translation>Şifrə ifadəsini dəyişdir</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation>Cüzdan şifrələməsini təsdiqləyin</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>Unutmayın ki, cüzdanınızın şifrələməsi bitcoinlərinizi kompüterinizə zərərli proqram tərəfindən oğurlanmaqdan tamamilə qoruya bilməz.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Cüzdan şifrələnəcək</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Cüzdanınız şifrələnmək üzrədir.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Cüzdanınız artıq şifrələnib.</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>Copy quantity</source>
<translation>Miqdarı kopyalayın</translation>
</message>
<message>
<source>Copy change</source>
<translation>Dəyişikliyi kopyalayın</translation>
</message>
<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>Map port using &amp;UPnP</source>
<translation>&amp;UPnP istifadə edən xəritə portu</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>PSBTOperationsDialog</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>
<message>
<source>&amp;Reset</source>
<translation>&amp;Sıfırla</translation>
</message>
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<context>
<name>ReceiveRequestDialog</name>
</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>Copy quantity</source>
<translation>Miqdarı kopyalayın</translation>
</message>
<message>
<source>Copy change</source>
<translation>Dəyişikliyi kopyalayın</translation>
</message>
<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>Other</source>
<translation>Başqa</translation>
</message>
<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>
<message>
<source>Error</source>
<translation>Xəta</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Replaying blocks...</source>
<translation>Bloklar yenidən səsləndirilir...</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation>Mənbə kodu %s-dən əldə edilə bilər.</translation>
</message>
<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

@@ -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>
@@ -552,6 +556,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Wallet</source>
<translation>Гаманец</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>

View File

@@ -175,10 +175,18 @@
<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>
@@ -449,6 +457,14 @@
<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>
@@ -678,6 +694,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>
@@ -693,9 +713,21 @@
</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>
<message>
<source>Wallet</source>
<translation>портфейл</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1301,6 +1333,10 @@
<source>User Agent</source>
<translation>Потребителски агент</translation>
</message>
<message>
<source>Node window</source>
<translation>Прозорец на възела</translation>
</message>
<message>
<source>Services</source>
<translation>Услуги</translation>

View File

@@ -7,11 +7,11 @@
</message>
<message>
<source>Create a new address</source>
<translation>Create a new address</translation>
<translation> ি ি ি </translation>
</message>
<message>
<source>&amp;New</source>
<translation>&amp;New</translation>
<translation></translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
@@ -19,7 +19,7 @@
</message>
<message>
<source>&amp;Copy</source>
<translation>&amp;Copy</translation>
<translation>&amp;ি</translation>
</message>
<message>
<source>C&amp;lose</source>
@@ -27,7 +27,7 @@
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>Delete the currently selected address from the list</translation>
<translation> িি ি </translation>
</message>
<message>
<source>Enter address or label to search</source>
@@ -35,19 +35,19 @@
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation>Export the data in the current tab to a file</translation>
<translation> ি </translation>
</message>
<message>
<source>&amp;Export</source>
<translation>&amp;Export</translation>
<translation>&amp;</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation>&amp;Delete</translation>
<translation>&amp;</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation>Choose the address to send coins to</translation>
<translation> ি </translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
@@ -69,6 +69,11 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation> ি ি ি ি "নতুন গ্রহণের ঠিকানা তৈরী করুন" "উত্তরাধিকার" ি </translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Copy Address</translation>
@@ -477,6 +482,22 @@
<source>Up to date</source>
<translation>Up to date</translation>
</message>
<message>
<source>&amp;Load PSBT from file...</source>
<translation> িিি ...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation>ি ি ি </translation>
</message>
<message>
<source>Load PSBT from clipboard...</source>
<translation>ি িিি ...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
<translation>ি ি ি ি </translation>
</message>
<message>
<source>Node window</source>
<translation>Node window</translation>
@@ -798,6 +819,10 @@
<source>Create Wallet</source>
<translation>Create Wallet</translation>
</message>
<message>
<source>Wallet</source>
<translation>Wallet</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Wallet Name</translation>
@@ -830,7 +855,7 @@
<source>Create</source>
<translation>Create</translation>
</message>
</context>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3667,10 +3692,6 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%s is set very high!</source>
<translation>%s is set very high!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>

File diff suppressed because it is too large Load Diff

View File

@@ -844,6 +844,10 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<source>Create Wallet</source>
<translation>Crear cartera</translation>
</message>
<message>
<source>Wallet</source>
<translation>Cartera</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Nom de la cartera</translation>
@@ -856,6 +860,10 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<source>Encrypt Wallet</source>
<translation>Xifrar la cartera</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Opcions avançades</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.
@@ -885,6 +893,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Create</source>
<translation>Crear</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Compilat sense el suport sqlite (requerit per carteres descriptor)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1527,6 +1539,66 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Save...</source>
<translation>Desa...</translation>
</message>
<message>
<source>Close</source>
<translation>Tanca</translation>
</message>
<message>
<source>Failed to load transaction: %1</source>
<translation>Ha fallat la càrrega de la transacció: %1</translation>
</message>
<message>
<source>Failed to sign transaction: %1</source>
<translation>Ha fallat la firma de la transacció: %1</translation>
</message>
<message>
<source>Could not sign any more inputs.</source>
<translation>No s'han pogut firmar més entrades.</translation>
</message>
<message>
<source>Signed %1 inputs, but more signatures are still required.</source>
<translation>Firmades %1 entrades, però encara es requereixen més firmes.</translation>
</message>
<message>
<source>Signed transaction successfully. Transaction is ready to broadcast.</source>
<translation>La transacció s'ha firmat correctament. La transacció està a punt per emetre's.</translation>
</message>
<message>
<source>Unknown error processing transaction.</source>
<translation>Error desconnegut al processar la transacció.</translation>
</message>
<message>
<source>Transaction broadcast failed: %1</source>
<translation>L'emissió de la transacció ha fallat: %1</translation>
</message>
<message>
<source>PSBT copied to clipboard.</source>
<translation>PSBT copiada al porta-retalls.</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Guarda Dades de Transacció</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Transacció Parcialment Firmada (Binari) (*.psbt)</translation>
</message>
<message>
<source>PSBT saved to disk.</source>
<translation>PSBT guardada al disc.</translation>
</message>
<message>
<source> * Sends %1 to %2</source>
<translation>*Envia %1 a %2</translation>
</message>
<message>
<source>Unable to calculate transaction fee or total transaction amount.</source>
<translation>Incapaç de calcular la comissió de transacció o la quantitat total de la transacció</translation>
</message>
<message>
<source>Pays transaction fee: </source>
<translation>Paga comissió de transacció:</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Import total</translation>
@@ -1535,7 +1607,35 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>or</source>
<translation>o</translation>
</message>
</context>
<message>
<source>Transaction has %1 unsigned inputs.</source>
<translation>La transacció té %1 entrades no firmades.</translation>
</message>
<message>
<source>Transaction is missing some information about inputs.</source>
<translation>La transacció manca d'informació en algunes entrades.</translation>
</message>
<message>
<source>Transaction still needs signature(s).</source>
<translation>La transacció encara necessita una o vàries firmes.</translation>
</message>
<message>
<source>(But this wallet cannot sign transactions.)</source>
<translation>(Però aquesta cartera no pot firmar transaccions.)</translation>
</message>
<message>
<source>(But this wallet does not have the right keys.)</source>
<translation>(Però aquesta cartera no les claus correctes.)</translation>
</message>
<message>
<source>Transaction is fully signed and ready for broadcast.</source>
<translation>La transacció està completament firmada i a punt per emetre's.</translation>
</message>
<message>
<source>Transaction status is unknown.</source>
<translation>L'estat de la transacció és desconegut.</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1700,6 +1800,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Error: %1</source>
<translation>Avís: %1</translation>
</message>
<message>
<source>Error initializing settings: %1</source>
<translation>Error a l'inicialitzar la configuració: %1</translation>
</message>
<message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 encara no ha finalitzat de manera segura...</translation>
@@ -1878,6 +1982,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Node window</source>
<translation>Finestra node</translation>
</message>
<message>
<source>Current block height</source>
<translation>Altura actual de bloc</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Obre el fitxer de registre de depuració %1 del directori de dades actual. Això pot trigar uns segons en fitxers de registre grans.</translation>
@@ -1890,6 +1998,10 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Increase font size</source>
<translation>Augmenta la mida de la lletra</translation>
</message>
<message>
<source>Permissions</source>
<translation>Permisos</translation>
</message>
<message>
<source>Services</source>
<translation>Serveis</translation>
@@ -2145,13 +2257,29 @@ Això és ideal per a carteres de mode només lectura.</translation>
<source>Could not unlock wallet.</source>
<translation>No s'ha pogut desblocar la cartera.</translation>
</message>
</context>
<message>
<source>Could not generate new %1 address</source>
<translation>No s'ha pogut generar una nova %1 direcció</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Request payment to ...</source>
<translation>Sol·licita el pagament a ...</translation>
</message>
<message>
<source>Address:</source>
<translation>Direcció:</translation>
</message>
<message>
<source>Amount:</source>
<translation>Import:</translation>
</message>
<message>
<source>Label:</source>
<translation>Etiqueta:</translation>
</message>
<message>
<source>Message:</source>
<translation>Missatge:</translation>
@@ -2426,6 +2554,22 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Are you sure you want to send?</source>
<translation>Esteu segur que ho voleu enviar?</translation>
</message>
<message>
<source>Create Unsigned</source>
<translation>Creació sense firmar</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Guarda Dades de Transacció</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Transacció Parcialment Firmada (Binari) (*.psbt)</translation>
</message>
<message>
<source>PSBT saved</source>
<translation>PSBT guardada</translation>
</message>
<message>
<source>or</source>
<translation>o</translation>
@@ -2434,6 +2578,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Pot incrementar la comissió més tard (senyala Replace-By-Fee o substitució per comissió, BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Si us plau, revisa la teva proposta de transacció. Es produirà una transacció de Bitcoin amb firma parcial (PSBT) que podeu guardar o copiar i després firmar, per exemple, amb una cartera %1, o amb una cartera física compatible amb PSBT.</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Reviseu la transacció</translation>
@@ -3252,9 +3400,21 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Close all wallets</source>
<translation>Tanqueu totes les carteres</translation>
</message>
</context>
<message>
<source>Are you sure you wish to close all wallets?</source>
<translation>Esteu segur que voleu tancar totes les carteres?</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>No wallet has been loaded.
Go to File &gt; Open Wallet to load a wallet.
- OR -</source>
<translation>No s'ha carregat cap cartera.
Ves a Arxiu &gt; Obrir Cartera per a carregar cartera.
- O -</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crear una nova cartera</translation>
@@ -3333,6 +3493,26 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<source>Unable to decode PSBT from clipboard (invalid base64)</source>
<translation>Incapaç de descodificar la PSBT del porta-retalls (base64 invàlida)</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>Carrega dades de transacció</translation>
</message>
<message>
<source>Partially Signed Transaction (*.psbt)</source>
<translation>Transacció Parcialment Firmada (*.psbt)</translation>
</message>
<message>
<source>PSBT file must be smaller than 100 MiB</source>
<translation>L'arxiu PSBT ha de ser més petit que 100MiB</translation>
</message>
<message>
<source>Unable to decode PSBT</source>
<translation>Incapaç de descodificar la PSBT</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>Còpia de seguretat de la cartera</translation>
@@ -3400,6 +3580,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<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>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation> Es proporciona més d'una adreça de vinculació. Utilitzant %s pel servei Tor onion automàticament creat.</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>Comproveu que la data i hora de l'ordinador són correctes. Si el rellotge és incorrecte, %s no funcionarà correctament.</translation>
@@ -3408,6 +3592,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>Contribueix si trobes %s útil. Visita %s per obtenir més informació sobre el programari.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: No s'ha pogut preparar la sentència per obtenir la versió de l'esquema de la cartera sqlite: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
<translation>SQLiteDatabase: No s'ha pogut preparar la sentència per obtenir l'identificador de l'aplicació: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation>SQLiteDatabase: esquema de cartera sqlite de versió %d desconegut. Només és compatible la versió %d</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation>La base de dades de blocs conté un bloc que sembla ser del futur. Això pot ser degut a que la data i l'hora del vostre ordinador s'estableix incorrectament. Només reconstruïu la base de dades de blocs si esteu segur que la data i l'hora del vostre ordinador són correctes</translation>
@@ -3512,6 +3708,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<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>Failed to verify database</source>
<translation>Ha fallat la verificació de la base de dades</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation>Ignorant -cartera duplicada %s.</translation>
</message>
<message>
<source>Importing...</source>
<translation>S'està important...</translation>
@@ -3540,6 +3744,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>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation>SQLiteDatabase: No s'ha pogut executar la sentència per verificar la base de dades: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: No s'ha pogut obtenir la versió d'esquema de cartera sqlite: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch the application id: %s</source>
<translation>SQLiteDatabase: No s'ha pogut obtenir l'identificador de l'aplicació: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation>SQLiteDatabase: No s'ha pogut preparar la sentència per verificar la base de dades: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation>SQLiteDatabase: ha fallat la lectura de la base de dades. Error de verificació: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation>SQLiteDatabase: Identificador daplicació inesperat. S'esperava %u, s'ha obtingut %u</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>El directori de blocs especificat "%s" no existeix.</translation>
@@ -3624,6 +3852,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Error: ha fallat escoltar les connexions entrants (l'escoltament ha retornat l'error %s)</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation>%s està malmès. Proveu dutilitzar leina bitcoin-wallet per recuperar o restaurar una còpia de seguretat.</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
<translation>No es pot actualitzar una cartera dividida que no sigui HD sense actualitzar-la per donar suport al grup de claus previ a la divisió. Utilitzeu la versió 169900 o no especificar-ne cap.</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>Import no vàlid per a -maxtxfee=&lt;amount&gt;: '%s' (cal que sigui com a mínim la comissió de minrelay de %s per evitar que les comissions s'encallin)</translation>
@@ -3632,10 +3868,34 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>L'import de la transacció és massa petit per enviar-la després que se'n dedueixi la comissió</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation>Aquest error es podria produir si la cartera no es va tancar netament i es va carregar per última vegada mitjançant una més nova de Berkeley DB. Si és així, utilitzeu el programari que va carregar aquesta cartera per última vegada</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation>Aquesta és la comissió màxima de transacció que pagueu (a més de la tarifa normal) per prioritzar l'evitació parcial de la despesa per sobre de la selecció regular de monedes.</translation>
</message>
<message>
<source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
<translation>La transacció necessita una adreça de canvi, però no la podem generar. Si us plau, visiteu primer a keypoolrefill.</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>Cal que torneu a construir la base de dades fent servir -reindex per tornar al mode no podat. Això tornarà a baixar la cadena de blocs sencera</translation>
</message>
<message>
<source>A fatal internal error occurred, see debug.log for details</source>
<translation>S'ha produït un error intern fatal. Consulteu debug.log per a més detalls</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation>No es poden configurar -peerblockfilters sense -blockfilterindex.</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation>L'espai de disc és insuficient!</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation>Error en llegir la base de dades, tancant.</translation>
@@ -3648,6 +3908,14 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Error: Disk space is low for %s</source>
<translation>Error: l'espai del disc és insuficient per a %s</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation>Error: Keypool sha esgotat. Visiteu primer keypoolrefill</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation>La taxa de tarifa (%s) és inferior a la configuració de la tarifa mínima (%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>
@@ -3668,6 +3936,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>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
<translation>No s'ha especificat cap servidor intermediari. Utilitzeu -proxy =&lt;ip&gt; o -proxy =&lt;ip:port&gt;.</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>El mode de poda no és compatible amb -blockfilterindex.</translation>
@@ -3758,10 +4030,6 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>%s is set very high!</source>
<translation>%s està especificat molt alt!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>S'ha produït un error en carregar la cartera %s. S'ha especificat un nom de fitxer duplicat -wallet.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>S'estan iniciant els fils de la xarxa...</translation>

View File

@@ -482,6 +482,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Up to date</source>
<translation>Aktuální</translation>
</message>
<message>
<source>&amp;Load PSBT from file...</source>
<translation>&amp;Načíst PSBT ze souboru...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation>Načíst částečně podepsanou Bitcoinovou transakci</translation>
</message>
<message>
<source>Load PSBT from clipboard...</source>
<translation>Načíst PSBT ze schránky</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
<translation>Načíst částečně podepsanou Bitcoinovou transakci ze schránky</translation>
</message>
<message>
<source>Node window</source>
<translation>Okno uzlu</translation>
@@ -518,10 +534,26 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Close wallet</source>
<translation>Zavřít peněženku</translation>
</message>
<message>
<source>Close All Wallets...</source>
<translation>Zavřít všechny peněženky</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Zavřít všechny peněženky</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Seznam argumentů Bitcoinu pro příkazovou řádku získáš v nápovědě %1</translation>
</message>
<message>
<source>&amp;Mask values</source>
<translation>&amp;Skrýt částky</translation>
</message>
<message>
<source>Mask the values in the Overview tab</source>
<translation>Skrýt částky v přehledu</translation>
</message>
<message>
<source>default wallet</source>
<translation>výchozí peněženka</translation>
@@ -630,7 +662,15 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Peněženka je &lt;b&gt;zašifrovaná&lt;/b&gt; a momentálně &lt;b&gt;zamčená&lt;/b&gt;</translation>
</message>
</context>
<message>
<source>Original message:</source>
<translation>Původní zpráva:</translation>
</message>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation>Stala se fatální chyba. %1 nemůže bezpečně pokračovat v činnosti, a bude ukončen.</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -803,6 +843,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Create Wallet</source>
<translation>Vytvořit peněženku</translation>
</message>
<message>
<source>Wallet</source>
<translation>Peněženka</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Název peněženky</translation>
@@ -815,6 +859,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Encrypt Wallet</source>
<translation>Zašifrovat peněženku</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Pokročilé možnosti.</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>
@@ -831,10 +879,22 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Make Blank Wallet</source>
<translation>Vytvořit prázdnou peněženku</translation>
</message>
<message>
<source>Use descriptors for scriptPubKey management</source>
<translation>Použít popisovače pro správu scriptPubKey</translation>
</message>
<message>
<source>Descriptor Wallet</source>
<translation>Popisovačová peněženka</translation>
</message>
<message>
<source>Create</source>
<translation>Vytvořit</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Zkompilováno bez podpory sqlite (vyžadováno pro popisovačové peněženky)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1307,6 +1367,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Whether to show coin control features or not.</source>
<translation>Zda ukazovat možnosti pro ruční správu mincí nebo ne.</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
<translation>Připojí se do Bitcoinové sítě přes vyhrazenou SOCKS5 proxy pro služby v Tor síti.</translation>
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
<translation>Použít samostatnou SOCKS&amp;5 proxy ke spojení s protějšky přes skryté služby v Toru:</translation>
</message>
<message>
<source>&amp;Third party transaction URLs</source>
<translation>&amp;URL třetích stran pro transakce</translation>
@@ -1442,13 +1510,97 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Current total balance in watch-only addresses</source>
<translation>Aktuální stav účtu sledovaných adres</translation>
</message>
</context>
<message>
<source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
<translation>Pro kartu Přehled je aktivovaný režim soukromí. Pro zobrazení částek, odškrtněte Nastavení -&gt; Skrýt částky.</translation>
</message>
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
<message>
<source>Sign Tx</source>
<translation>Podepsat transakci</translation>
</message>
<message>
<source>Broadcast Tx</source>
<translation>Odeslat transakci do sítě</translation>
</message>
<message>
<source>Copy to Clipboard</source>
<translation>Kopírovat do schránky</translation>
</message>
<message>
<source>Save...</source>
<translation>Uložit...</translation>
</message>
<message>
<source>Close</source>
<translation>Zavřít</translation>
</message>
<message>
<source>Failed to load transaction: %1</source>
<translation>Nepodařilo se načíst transakci: %1</translation>
</message>
<message>
<source>Failed to sign transaction: %1</source>
<translation>Nepodařilo se podepsat transakci: %1</translation>
</message>
<message>
<source>Could not sign any more inputs.</source>
<translation>Nelze podepsat další vstupy.</translation>
</message>
<message>
<source>Signed %1 inputs, but more signatures are still required.</source>
<translation>Podepsáno %1 výstupů, ale jsou ještě potřeba další podpisy.</translation>
</message>
<message>
<source>Signed transaction successfully. Transaction is ready to broadcast.</source>
<translation>Transakce byla úspěšně podepsána. Transakce je připravena k odeslání.</translation>
</message>
<message>
<source>Unknown error processing transaction.</source>
<translation>Neznámá chyba při zpracování transakce.</translation>
</message>
<message>
<source>Transaction broadcast successfully! Transaction ID: %1</source>
<translation>Transakce byla úspěšně odeslána! ID transakce: %1</translation>
</message>
<message>
<source>Transaction broadcast failed: %1</source>
<translation>Odeslání transakce se nezdařilo: %1</translation>
</message>
<message>
<source>PSBT copied to clipboard.</source>
<translation>PSBT zkopírována do schránky.</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Zachovaj procesní data</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Částečně podepsaná transakce (Binární) (*.psbt)</translation>
</message>
<message>
<source>PSBT saved to disk.</source>
<translation>PSBT uložena na disk.</translation>
</message>
<message>
<source> * Sends %1 to %2</source>
<translation> * Odešle %1 na %2</translation>
</message>
<message>
<source>Unable to calculate transaction fee or total transaction amount.</source>
<translation>Nelze vypočítat transakční poplatek nebo celkovou výši transakce.</translation>
</message>
<message>
<source>Pays transaction fee: </source>
<translation>Platí transakční poplatek:</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Celková částka</translation>
@@ -1457,7 +1609,35 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>or</source>
<translation>nebo</translation>
</message>
</context>
<message>
<source>Transaction has %1 unsigned inputs.</source>
<translation>Transakce %1 má nepodepsané vstupy.</translation>
</message>
<message>
<source>Transaction is missing some information about inputs.</source>
<translation>Transakci chybí některé informace o vstupech.</translation>
</message>
<message>
<source>Transaction still needs signature(s).</source>
<translation>Transakce stále potřebuje podpis(y).</translation>
</message>
<message>
<source>(But this wallet cannot sign transactions.)</source>
<translation>(Ale tato peněženka nemůže podepisovat transakce.)</translation>
</message>
<message>
<source>(But this wallet does not have the right keys.)</source>
<translation>Ale tenhle vstup nemá správné klíče</translation>
</message>
<message>
<source>Transaction is fully signed and ready for broadcast.</source>
<translation>Transakce je plně podepsána a připravena k odeslání.</translation>
</message>
<message>
<source>Transaction status is unknown.</source>
<translation>Stav transakce není známý.</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1622,6 +1802,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Error: %1</source>
<translation>Chyba: %1</translation>
</message>
<message>
<source>Error initializing settings: %1</source>
<translation>Zjišťování neshod: %1</translation>
</message>
<message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 ještě bezpečně neskončil</translation>
@@ -1800,6 +1984,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Node window</source>
<translation>Okno uzlu</translation>
</message>
<message>
<source>Current block height</source>
<translation>Velikost aktuálního bloku</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>
@@ -1812,6 +2000,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Increase font size</source>
<translation>Zvětšit písmo</translation>
</message>
<message>
<source>Permissions</source>
<translation>Oprávnění</translation>
</message>
<message>
<source>Services</source>
<translation>Služby</translation>
@@ -2067,9 +2259,21 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Could not unlock wallet.</source>
<translation>Nemohu odemknout peněženku.</translation>
</message>
</context>
<message>
<source>Could not generate new %1 address</source>
<translation>Nelze vygenerovat novou adresu %1</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Request payment to ...</source>
<translation>Požádat o platbu pro ...</translation>
</message>
<message>
<source>Address:</source>
<translation>Adresa:</translation>
</message>
<message>
<source>Amount:</source>
<translation>Částka:</translation>
@@ -2352,6 +2556,22 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Are you sure you want to send?</source>
<translation>Jsi si jistý, že tuhle transakci chceš poslat?</translation>
</message>
<message>
<source>Create Unsigned</source>
<translation>Vytvořit bez podpisu</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Zachovaj procesní data</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Částečně podepsaná transakce (Binární) (*.psbt)</translation>
</message>
<message>
<source>PSBT saved</source>
<translation>PSBT uložena</translation>
</message>
<message>
<source>or</source>
<translation>nebo</translation>
@@ -2360,6 +2580,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Poplatek můžete navýšit později (vysílá se "Replace-By-Fee" - nahrazení poplatkem, BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Zkontrolujte prosím svůj návrh transakce. Výsledkem bude částečně podepsaná bitcoinová transakce (PSBT), kterou můžete uložit nebo kopírovat a poté podepsat např. pomocí offline %1 peněženky nebo hardwarové peněženky kompatibilní s PSBT.</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Prosím, zkontrolujte vaši transakci.</translation>
@@ -3174,9 +3398,25 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Zavření peněženky na příliš dlouhou dobu může vyústit v potřebu resynchronizace celého blockchainu pokud je zapnuté prořezávání.</translation>
</message>
</context>
<message>
<source>Close all wallets</source>
<translation>Zavřít všechny peněženky</translation>
</message>
<message>
<source>Are you sure you wish to close all wallets?</source>
<translation>Opravdu chcete zavřít všechny peněženky?</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>No wallet has been loaded.
Go to File &gt; Open Wallet to load a wallet.
- OR -</source>
<translation>Není načtena žádná peněženka.
Přejděte do Soubor &gt; Otevřít peněženku pro načtení peněženky.
- NEBO -</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Vytvoř novou peněženku</translation>
@@ -3226,7 +3466,7 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT zkopírováno</translation>
<translation>PSBT zkopírována</translation>
</message>
<message>
<source>Can't sign transaction.</source>
@@ -3255,6 +3495,26 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Error</source>
<translation>Chyba</translation>
</message>
<message>
<source>Unable to decode PSBT from clipboard (invalid base64)</source>
<translation>Nelze dekódovat PSBT ze schránky (neplatné kódování base64)</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>Načíst data o transakci</translation>
</message>
<message>
<source>Partially Signed Transaction (*.psbt)</source>
<translation>Částečně podepsaná transakce (*.psbt)</translation>
</message>
<message>
<source>PSBT file must be smaller than 100 MiB</source>
<translation>Soubor PSBT musí být menší než 100 MiB</translation>
</message>
<message>
<source>Unable to decode PSBT</source>
<translation>Nelze dekódovat PSBT</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>Záloha peněženky</translation>
@@ -3322,6 +3582,10 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Nastala chyba při čtení souboru %s! Všechny klíče se přečetly správně, ale data o transakcích nebo záznamy v adresáři mohou chybět či být nesprávné.</translation>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation>Byla zadána více než jedna onion adresa. Použiju %s pro automaticky vytvořenou službu sítě Tor.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Zkontroluj, že máš v počítači správně nastavený datum a čas! Pokud jsou nastaveny špatně, %s nebude fungovat správně.</translation>
@@ -3330,6 +3594,18 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>Prosíme, zapoj se nebo přispěj, pokud ti %s přijde užitečný. Více informací o programu je na %s.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Nepodařilo se připravit dotaz pro získání verze schématu sqlite peněženky: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
<translation>SQLiteDatabase: Nepodařilo se připravit dotaz pro získání id aplikace: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation>SQLiteDatabase: Neznámá verze schématu sqlite peněženky: %d. Podporovaná je pouze verze %d</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation>Databáze bloků obsahuje blok, který vypadá jako z budoucnosti, což může být kvůli špatně nastavenému datu a času na tvém počítači. Nech databázi bloků přestavět pouze v případě, že si jsi jistý, že máš na počítači správný datum a čas</translation>
@@ -3434,6 +3710,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Failed to rescan the wallet during initialization</source>
<translation>Během inicializace se nepodařilo proskenovat peněženku</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation>Selhání v ověření databáze</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation>Ignoruji duplicitní -wallet %s.</translation>
</message>
<message>
<source>Importing...</source>
<translation>Importuji...</translation>
@@ -3462,6 +3746,30 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>Neplatná částka pro -fallbackfee=&lt;částka&gt;: '%s'</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation>SQLiteDatabase: Nepodařilo se vykonat dotaz pro ověření databáze: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Nepodařilo se získat verzi sqlite schématu peněženky: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch the application id: %s</source>
<translation>SQLiteDatabase: Nepodařilo se získat id aplikace: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation>SQLiteDatabase: Nepodařilo se připravit dotaz pro ověření databáze: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation>SQLiteDatabase: Nepodařilo se přečist databázovou ověřovací chybu: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation>SQLiteDatabase: Neočekávané id aplikace. Očekáváno: %u, ve skutečnosti %u</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Zadaný adresář bloků "%s" neexistuje.</translation>
@@ -3546,6 +3854,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Chyba: Nelze naslouchat příchozí spojení (listen vrátil chybu %s)</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation>Soubor %s je poškozen. Zkus použít bitcoin-wallet pro opravu nebo obnov zálohu.</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
<translation>Nelze upgradovat na non HD split peněženku bez aktualizace pre split keypoolu. Použij verzi 169900 nebo nezadávej verzi žádnou.</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>Neplatná částka pro -maxtxfee=&lt;amount&gt;: '%s' (musí být alespoň jako poplatek minrelay %s, aby transakce nezůstávaly trčet)</translation>
@@ -3554,10 +3870,34 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>Částka v transakci po odečtení poplatku je příliš malá na odeslání</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation>Tato chyba může nastat pokud byla peněženka ukončena chybně a byla naposledy použita programem s novější verzi Berkeley DB. Je-li to tak, použijte program, který naposledy přistoupil k této peněžence</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation>Jedná se o maximální poplatek, který zaplatíte (navíc k běžnému poplatku), aby se upřednostnila útrata z dosud nepoužitých adres oproti těm jednou použitých.</translation>
</message>
<message>
<source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
<translation>Transakce potřebuje adresu pro drobné, ale ta se nepodařila vygenerovat. Nejdřív zavolej keypoolrefill.</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>K návratu k neprořezávacímu režimu je potřeba přestavět databázi použitím -reindex. Také se znovu stáhne celý blockchain</translation>
</message>
<message>
<source>A fatal internal error occurred, see debug.log for details</source>
<translation>Nastala závažná vnitřní chyba, podrobnosti viz v debug.log.</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation>Nelze nastavit -peerblockfilters bez -blockfilterindex.</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation>Na disku je příliš málo místa!</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation>Chyba při čtení z databáze, ukončuji se.</translation>
@@ -3570,6 +3910,14 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>Error: Disk space is low for %s</source>
<translation>Chyba: Málo místa na disku pro %s</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation>Chyba: V keypoolu došly adresy, nejdřív zavolej keypool refill</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation>Zvolený poplatek (%s) je nižší než nastavený minimální poplatek (%s).</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Neplatná -onion adresa či hostitel: '%s'</translation>
@@ -3590,6 +3938,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>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
<translation>Není specifikován proxy server. Použijte -proxy=&lt;ip&gt; nebo -proxy=&lt;ip:port&gt;.</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Režim prořezávání není kompatibilní s -blockfilterindex.</translation>
@@ -3680,10 +4032,6 @@ Poznámka: Jelikož je poplatek počítaný za bajt, poplatek o hodnotě "100 sa
<source>%s is set very high!</source>
<translation>%s je nastaveno velmi vysoko!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Chyba při načítání peněženky %s. Udán duplicitní název souboru -wallet.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Spouštím síťová vlákna…</translation>

View File

@@ -610,6 +610,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Wallet</source>
<translation>Waled</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>

View File

@@ -69,6 +69,11 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Disse er dine Bitcoin-adresser til afsendelse af betalinger. Tjek altid beløb og modtagelsesadresse, inden du sender bitcoins.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Disse er dine Bitcoin adresser til at modtage betalinger. Benyt 'Opret ny modtager adresse' knappen i modtag fanen for at oprette nye adresser.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopiér adresse</translation>
@@ -477,6 +482,22 @@
<source>Up to date</source>
<translation>Opdateret</translation>
</message>
<message>
<source>&amp;Load PSBT from file...</source>
<translation>&amp;Indlæs PSBT fra fil...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation>Indlæs Partvist Signeret Bitcoin-Transaktion</translation>
</message>
<message>
<source>Load PSBT from clipboard...</source>
<translation>Indlæs PSBT fra udklipsholder...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
<translation>Indlæs Partvist Signeret Bitcoin-Transaktion fra udklipsholder</translation>
</message>
<message>
<source>Node window</source>
<translation>Knudevindue</translation>
@@ -513,10 +534,26 @@
<source>Close wallet</source>
<translation>Luk tegnebog</translation>
</message>
<message>
<source>Close All Wallets...</source>
<translation>Luk alle tegnebøgerne ...</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Luk alle tegnebøgerne </translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Vis %1 hjælpebesked for at få en liste over mulige tilvalg for Bitcoin kommandolinje</translation>
</message>
<message>
<source>&amp;Mask values</source>
<translation>&amp;Maskér værdier</translation>
</message>
<message>
<source>Mask the values in the Overview tab</source>
<translation>Maskér værdierne i Oversigt-fanebladet</translation>
</message>
<message>
<source>default wallet</source>
<translation>Standard tegnebog</translation>
@@ -625,7 +662,15 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Tegnebog er &lt;b&gt;krypteret&lt;/b&gt; og i øjeblikket &lt;b&gt;låst&lt;/b&gt;</translation>
</message>
</context>
<message>
<source>Original message:</source>
<translation>Original besked:</translation>
</message>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation>Der skete en fatal fejl. %1 kan ikke længere fortsætte sikkert og vil afslutte.</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -798,6 +843,10 @@
<source>Create Wallet</source>
<translation>Opret tegnebog</translation>
</message>
<message>
<source>Wallet</source>
<translation>Tegnebog</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Navn på tegnebog</translation>
@@ -810,6 +859,10 @@
<source>Encrypt Wallet</source>
<translation>Kryptér tegnebog</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Avancerede Indstillinger</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>Slå private nøgler fra for denne tegnebog. Tegnebøger med private nøgler slået fra vil ikke have nogen private nøgler og kan ikke have et HD-seed eller importerede private nøgler. Dette er ideelt til kigge-tegnebøger.</translation>
@@ -826,10 +879,22 @@
<source>Make Blank Wallet</source>
<translation>Lav flad tegnebog</translation>
</message>
<message>
<source>Use descriptors for scriptPubKey management</source>
<translation>Brug beskrivere til håndtering af scriptPubKey</translation>
</message>
<message>
<source>Descriptor Wallet</source>
<translation>Beskriver-Pung</translation>
</message>
<message>
<source>Create</source>
<translation>Opret</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Kompileret uden sqlite-understøttelse (krævet til beskriver-punge)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1302,6 +1367,14 @@
<source>Whether to show coin control features or not.</source>
<translation>Hvorvidt egenskaber for coin-styring skal vises eller ej.</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
<translation>Opret forbindelse til Bitcoin-netværk igennem en separat SOCKS5 proxy til Tor-onion-tjenester.</translation>
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
<translation>Brug separate SOCKS&amp;5 proxy, for at nå fælle via Tor-onion-tjenester:</translation>
</message>
<message>
<source>&amp;Third party transaction URLs</source>
<translation>&amp;Tredjeparts-transaktions-URL'er</translation>
@@ -1437,13 +1510,97 @@
<source>Current total balance in watch-only addresses</source>
<translation>Nuværende totalsaldo kigge-adresser</translation>
</message>
</context>
<message>
<source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
<translation>Privatlivstilstand aktiveret for Oversigt-fanebladet. Fjern flueben fra Instillinger-&gt;Maskér værdier, for at afmaskere værdierne.</translation>
</message>
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
<message>
<source>Sign Tx</source>
<translation>Signér Tx</translation>
</message>
<message>
<source>Broadcast Tx</source>
<translation>Udsend Tx</translation>
</message>
<message>
<source>Copy to Clipboard</source>
<translation>Kopier til udklipsholder</translation>
</message>
<message>
<source>Save...</source>
<translation>Gem...</translation>
</message>
<message>
<source>Close</source>
<translation>Luk</translation>
</message>
<message>
<source>Failed to load transaction: %1</source>
<translation>Kunne ikke indlæse transaktion: %1</translation>
</message>
<message>
<source>Failed to sign transaction: %1</source>
<translation>Kunne ikke signere transaktion: %1</translation>
</message>
<message>
<source>Could not sign any more inputs.</source>
<translation>Kunne ikke signere flere input.</translation>
</message>
<message>
<source>Signed %1 inputs, but more signatures are still required.</source>
<translation>Signerede %1 input, men flere signaturer kræves endnu.</translation>
</message>
<message>
<source>Signed transaction successfully. Transaction is ready to broadcast.</source>
<translation>Signering af transaktion lykkedes. Transaktion er klar til udsendelse.</translation>
</message>
<message>
<source>Unknown error processing transaction.</source>
<translation>Ukendt fejl i behandling af transaktion.</translation>
</message>
<message>
<source>Transaction broadcast successfully! Transaction ID: %1</source>
<translation>Udsendelse af transaktion lykkedes! Transaktions-ID: %1</translation>
</message>
<message>
<source>Transaction broadcast failed: %1</source>
<translation>Udsendelse af transaktion mislykkedes: %1</translation>
</message>
<message>
<source>PSBT copied to clipboard.</source>
<translation>PSBT kopieret til udklipsholder.</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Gem Transaktionsdata</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Partvist Signeret Transaktion (Binær) (*.psbt)</translation>
</message>
<message>
<source>PSBT saved to disk.</source>
<translation>PSBT gemt disk.</translation>
</message>
<message>
<source> * Sends %1 to %2</source>
<translation>* Sender %1 til %2</translation>
</message>
<message>
<source>Unable to calculate transaction fee or total transaction amount.</source>
<translation>Kunne ikke beregne transaktionsgebyr eller totalt transaktionsbeløb.</translation>
</message>
<message>
<source>Pays transaction fee: </source>
<translation>Betaler transaktionsgebyr</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Total Mængde</translation>
@@ -1452,7 +1609,35 @@
<source>or</source>
<translation>eller</translation>
</message>
</context>
<message>
<source>Transaction has %1 unsigned inputs.</source>
<translation>Transaktion har %1 usignerede input.</translation>
</message>
<message>
<source>Transaction is missing some information about inputs.</source>
<translation>Transaktion mangler noget information om input.</translation>
</message>
<message>
<source>Transaction still needs signature(s).</source>
<translation>Transaktion mangler stadig signatur(er).</translation>
</message>
<message>
<source>(But this wallet cannot sign transactions.)</source>
<translation>(Men denne pung kan ikke signere transaktioner.)</translation>
</message>
<message>
<source>(But this wallet does not have the right keys.)</source>
<translation>(Men denne pung har ikke de rette nøgler.)</translation>
</message>
<message>
<source>Transaction is fully signed and ready for broadcast.</source>
<translation>Transaktion er fuldt signeret og klar til udsendelse.</translation>
</message>
<message>
<source>Transaction status is unknown.</source>
<translation>Transaktionsstatus er ukendt.</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1617,6 +1802,10 @@
<source>Error: %1</source>
<translation>Fejl: %1</translation>
</message>
<message>
<source>Error initializing settings: %1</source>
<translation>Fejl ved initialisering af indstillinger: %1</translation>
</message>
<message>
<source>%1 didn't yet exit safely...</source>
<translation>%1 har endnu ikke afsluttet sikker vis</translation>
@@ -1795,6 +1984,10 @@
<source>Node window</source>
<translation>Knudevindue</translation>
</message>
<message>
<source>Current block height</source>
<translation>Nuværende blokhøjde</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>Åbn %1s fejlsøgningslogfil fra den aktuelle datamappe. Dette kan tage nogle sekunder for store logfiler.</translation>
@@ -1807,6 +2000,10 @@
<source>Increase font size</source>
<translation>Forstør skrifttypestørrelse</translation>
</message>
<message>
<source>Permissions</source>
<translation>Tilladelser</translation>
</message>
<message>
<source>Services</source>
<translation>Tjenester</translation>
@@ -2062,9 +2259,21 @@
<source>Could not unlock wallet.</source>
<translation>Kunne ikke låse tegnebog op.</translation>
</message>
</context>
<message>
<source>Could not generate new %1 address</source>
<translation>Kunne ikke generere ny %1 adresse</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Request payment to ...</source>
<translation>Anmod om betaling til</translation>
</message>
<message>
<source>Address:</source>
<translation>Adresse</translation>
</message>
<message>
<source>Amount:</source>
<translation>Beløb:</translation>
@@ -2343,6 +2552,22 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Are you sure you want to send?</source>
<translation>Er du sikker på, at du vil sende?</translation>
</message>
<message>
<source>Create Unsigned</source>
<translation>Opret Usigneret</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Gem Transaktionsdata</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary) (*.psbt)</source>
<translation>Partvist Signeret Transaktion (Binær) (*.psbt)</translation>
</message>
<message>
<source>PSBT saved</source>
<translation>PSBT gemt</translation>
</message>
<message>
<source>or</source>
<translation>eller</translation>
@@ -2351,6 +2576,10 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Du kan øge gebyret senere (signalerer erstat-med-gebyr, BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Gennemse venligst dit transaktionsforslag. Dette vil producere en Partvist Signeret Bitcoin Transaktion (PSBT), som du kan gemme eller kopiere, og så signere med f.eks. en offline %1 pung, eller en PSBT-kompatibel maskinelpung.</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Venligst, vurder din transaktion.</translation>
@@ -2516,7 +2745,7 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
</message>
<message>
<source>A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</source>
<translation>En besked, som blev føjet til “bitcon:”-URI'en, som vil gemmes med transaktionen til din reference. Bemærk: Denne besked vil ikke blive sendt over Bitcoin-netværket.</translation>
<translation>En besked, som blev føjet til “bitcoin:”-URI'en, som vil gemmes med transaktionen til din reference. Bemærk: Denne besked vil ikke blive sendt over Bitcoin-netværket.</translation>
</message>
<message>
<source>Pay To:</source>
@@ -3165,9 +3394,25 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Lukning af tegnebog i for lang tid kan resultere i at synkronisere hele kæden forfra, hvis beskæring er aktiveret.</translation>
</message>
</context>
<message>
<source>Close all wallets</source>
<translation>Luk alle tegnebøgerne </translation>
</message>
<message>
<source>Are you sure you wish to close all wallets?</source>
<translation>Er du sikker du vil lukke alle tegnebøgerne?</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>No wallet has been loaded.
Go to File &gt; Open Wallet to load a wallet.
- OR -</source>
<translation>Ingen pung er blevet indlæst.
til Fil &gt; Åbn Pung for, at indlæse en pung.
- ELLER -</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Opret en ny tegnebog</translation>
@@ -3246,6 +3491,26 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Error</source>
<translation>Fejl</translation>
</message>
<message>
<source>Unable to decode PSBT from clipboard (invalid base64)</source>
<translation>Kan ikke afkode PSBT fra udklipsholder (ugyldigt base64)</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>Indlæs transaktions data</translation>
</message>
<message>
<source>Partially Signed Transaction (*.psbt)</source>
<translation>Partvist Signeret Transaktion (*.psbt)</translation>
</message>
<message>
<source>PSBT file must be smaller than 100 MiB</source>
<translation>PSBT-fil skal være mindre end 100 MiB</translation>
</message>
<message>
<source>Unable to decode PSBT</source>
<translation>Kunne ikke afkode PSBT</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>Sikkerhedskopiér tegnebog</translation>
@@ -3313,6 +3578,10 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Fejl under læsning af %s! Alle nøgler blev læst korrekt, men transaktionsdata eller indgange i adressebogen kan mangle eller være ukorrekte.</translation>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation>Mere end én onion-bindingsadresse er opgivet. Bruger %s til den automatiske oprettelse af Tor-onion-tjeneste.</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>Undersøg venligst at din computers dato og klokkeslet er korrekt indstillet! Hvis der er fejl i disse, vil %s ikke fungere korrekt.</translation>
@@ -3321,6 +3590,18 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>Overvej venligst at bidrage til udviklingen, hvis du finder %s brugbar. Besøg %s for yderligere information om softwaren.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Forberedelse af udtrykket på, at gribe sqlite-pung-skemaversion mislykkedes: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
<translation>SQLiteDatabase: Forberedelse af udtrykket på, at gribe applikations-ID mislykkedes: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation>SQLiteDatabase: Ukendt sqlite-pung-skemaversion %d. Kun version %d understøttes</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>Blokdatabasen indeholder en blok, som ser ud til at være fra fremtiden. Dette kan skyldes, at din computers dato og tid ikke er sat korrekt. Genopbyg kun blokdatabasen, hvis du er sikker på, at din computers dato og tid er korrekt</translation>
@@ -3425,6 +3706,14 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Failed to rescan the wallet during initialization</source>
<translation>Genindlæsning af tegnebogen under initialisering mislykkedes</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation>Kunne ikke verificere databasen</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation>Ignorerer duplikeret -pung %s.</translation>
</message>
<message>
<source>Importing...</source>
<translation>Importerer…</translation>
@@ -3453,6 +3742,22 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>Ugyldigt beløb for -fallbackfee=&lt;beløb&gt;: “%s”</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation>SQLiteDatabase: Udførelse af udtryk for, at bekræfte database mislykkedes: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation>SQLiteDatabase: Forberedelse af udtryk på, at bekræfte database mislykkedes: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation>SQLiteDatabase: Indlæsning af database-bekræftelsesfejl mislykkedes: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation>SQLiteDatabase: Uventet applikations-ID. Ventede %u, fik %u</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Angivet blokmappe “%s” eksisterer ikke.</translation>
@@ -3537,6 +3842,14 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Fejl: Lytning efter indkommende forbindelser mislykkedes (lytning resultarede i fejl %s)</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation>%s beskadiget. Prøv at bruge pung-værktøjet bitcoin-wallet til, at bjærge eller gendanne en sikkerhedskopi.</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
<translation>Kan ikke opgradere en ikke-HD-splittet pung, uden at opgradere for, at understøtte præ-split-nøglepøl. Brug venligst version 169900 eller ingen specificeret version.</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>Ugyldigt beløb for -maxtxfee=&lt;beløb&gt;: “%s” (skal være på mindst minrelay-gebyret på %s for at undgå hængende transaktioner)</translation>
@@ -3545,10 +3858,34 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>Transaktionsbeløbet er for lille til at sende, når gebyret er trukket fra</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation>Denne fejl kunne finde sted hvis denne pung ikke blev lukket rent ned og sidst blev indlæst vha. en udgave med en nyere version af Berkeley DB. Brug i så fald venligst den programvare, som sidst indlæste denne pung</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation>Dette er det maksimale transaktionsgebyr, du betaler (ud over det normale gebyr) for, at prioritere partisk forbrugsafvigelse over almindelig møntudvælgelse.</translation>
</message>
<message>
<source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
<translation>Transaktion har brug for for, at skifte adresse, men vi kan ikke generere den. Tilkald venligst keypoolrefill først.</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>Du er nødt til at genopbygge databasen ved hjælp af -reindex for at tilbage til ikke-beskåret tilstand. Dette vil downloade hele blokkæden igen</translation>
</message>
<message>
<source>A fatal internal error occurred, see debug.log for details</source>
<translation>Der er sket en fatal intern fejl, se debug.log for detaljer</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation>Kan ikke indstille -peerblockfilters uden -blockfilterindex.</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation>Fejl: Disk pladsen er for lav!</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation>Fejl under læsning fra database; lukker ned.</translation>
@@ -3561,6 +3898,14 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Error: Disk space is low for %s</source>
<translation>Fejl: Disk plads er lavt for %s</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation>Fejl: Nøglepøl løb tør, tilkald venligst keypoolrefill først</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation>Gebyrrate (%s) er lavere end den minimale gebyrrate-indstilling (%s)</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Ugyldig -onion-adresse eller værtsnavn: %s</translation>
@@ -3581,6 +3926,10 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>Need to specify a port with -whitebind: '%s'</source>
<translation>Nødt til at angive en port med -whitebinde: %s</translation>
</message>
<message>
<source>No proxy server specified. Use -proxy=&lt;ip&gt; or -proxy=&lt;ip:port&gt;.</source>
<translation>Ingen proxyserver specificeret. Brug -proxy=&lt;ip&gt; eller -proxy=&lt;ip:port&gt;.</translation>
</message>
<message>
<source>Prune mode is incompatible with -blockfilterindex.</source>
<translation>Beskærings tilstand er ikke understøttet med -blockfilterindex.</translation>
@@ -3671,10 +4020,6 @@ Note: Siden gebyret er kalkuleret på en per-byte basis, et gebyr på "100 satos
<source>%s is set very high!</source>
<translation>%s er meget højt sat!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Fejl under indlæsning af tegnebog %s. -wallet filnavn angivet mere end én gang.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Starter netværkstråde</translation>

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>Αντέγραψε την επιλεγμένη διεύθυνση στο πρόχειρο του συστήματος</translation>
<translation>Αντιγράψτε την επιλεγμένη διεύθυνση στο πρόχειρο του συστήματος</translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -69,6 +69,12 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Αυτές είναι οι Bitcoin διευθύνσεις σας για να στέλνετε πληρωμές. Να ελέγχετε πάντα το ποσό, καθώς και τη διεύθυνση παραλήπτη πριν στείλετε νομίσματα.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Αυτές είναι οι Bitcoin διευθύνσεις για την λήψη πληρωμών. Χρησιμοποιήστε το κουμπί 'Δημιουργία νέας διεύθυνσης λήψεων' στο παράθυρο λήψεων για την δημιουργία νέας διεύθυνσης.
Η υπογραφή είναι διαθέσιμη μόνο σε διευθύνσεις 'παλαιού τύπου'.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Αντιγραφή Διεύθυνσης</translation>
@@ -477,6 +483,22 @@
<source>Up to date</source>
<translation>Ενημερωμένο</translation>
</message>
<message>
<source>&amp;Load PSBT from file...</source>
<translation>&amp;Φόρτωση PSBT από αρχείο...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation>Φόρτωση συναλλαγής Partially Signed Bitcoin</translation>
</message>
<message>
<source>Load PSBT from clipboard...</source>
<translation>Φόρτωση PSBT από το πρόχειρο...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
<translation>Φόρτωση συναλλαγής Partially Signed Bitcoin από το πρόχειρο</translation>
</message>
<message>
<source>Node window</source>
<translation>Κόμβος παράθυρο</translation>
@@ -513,10 +535,26 @@
<source>Close wallet</source>
<translation>Κλείσιμο πορτοφολιού</translation>
</message>
<message>
<source>Close All Wallets...</source>
<translation>Κλείσιμο όλων των πορτοφολιών...</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Κλείσιμο όλων των πορτοφολιών</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Εμφάνισε το %1 βοηθητικό μήνυμα για λήψη μιας λίστας με διαθέσιμες επιλογές για Bitcoin εντολές </translation>
</message>
<message>
<source>&amp;Mask values</source>
<translation>&amp;Απόκρυψη τιμών</translation>
</message>
<message>
<source>Mask the values in the Overview tab</source>
<translation>Απόκρυψη τιμών στην καρτέλα Επισκόπησης</translation>
</message>
<message>
<source>default wallet</source>
<translation>Προεπιλεγμένο πορτοφόλι</translation>
@@ -625,7 +663,15 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Το πορτοφόλι είναι &lt;b&gt;κρυπτογραφημένο&lt;/b&gt; και &lt;b&gt;κλειδωμένο&lt;/b&gt;</translation>
</message>
</context>
<message>
<source>Original message:</source>
<translation>Αρχικό Μήνυμα:</translation>
</message>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation>Συνέβη ενα μοιραίο σφάλμα. %1 δε μπορεί να συνεχιστεί με ασφάλεια και θα σταματήσει</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
@@ -646,7 +692,7 @@
</message>
<message>
<source>Fee:</source>
<translation>Ταρίφα:</translation>
<translation>Τέλη:</translation>
</message>
<message>
<source>Dust:</source>
@@ -654,7 +700,7 @@
</message>
<message>
<source>After Fee:</source>
<translation>Ταρίφα αλλαγής:</translation>
<translation>Τέλη αλλαγής:</translation>
</message>
<message>
<source>Change:</source>
@@ -798,6 +844,10 @@
<source>Create Wallet</source>
<translation>Δημιουργία Πορτοφολιού</translation>
</message>
<message>
<source>Wallet</source>
<translation>Πορτοφόλι</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Όνομα Πορτοφολιού</translation>
@@ -810,6 +860,10 @@
<source>Encrypt Wallet</source>
<translation>Κρυπτογράφηση Πορτοφολιού</translation>
</message>
<message>
<source>Advanced Options</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>
@@ -826,10 +880,22 @@
<source>Make Blank Wallet</source>
<translation>Δημιουργία Άδειου Πορτοφολιού</translation>
</message>
<message>
<source>Use descriptors for scriptPubKey management</source>
<translation>χρήση περιγραφέων για την διαχείριση του scriptPubKey</translation>
</message>
<message>
<source>Descriptor Wallet</source>
<translation>Πορτοφόλι Περιγραφέα </translation>
</message>
<message>
<source>Create</source>
<translation>Δημιουργία</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Μεταγλωτίστηκε χωρίς την υποστήριξη sqlite (απαραίτητη για περιγραφικά πορτοφόλια )</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1294,6 +1360,14 @@
<source>Whether to show coin control features or not.</source>
<translation>Επιλογή κατά πόσο να αναδείχνονται οι δυνατότητες ελέγχου κερμάτων.</translation>
</message>
<message>
<source>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</source>
<translation>Συνδεθείτε στο δίκτυο Bitcoin μέσω ενός ξεχωριστού διακομιστή μεσολάβησης SOCKS5 για τις onion υπηρεσίες του Tor.</translation>
</message>
<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
<translation>Χρησιμοποιήστε ξεχωριστό διακομιστή μεσολάβησης SOCKS&amp;5 για σύνδεση με αποδέκτες μέσω των υπηρεσιών onion του Tor:</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line or in the configuration file:</source>
<translation>Οι επιλογές που έχουν οριστεί σε αυτό το παράθυρο διαλόγου παραβλέπονται από τη γραμμή εντολών ή από το αρχείο διαμόρφωσης:</translation>
@@ -1426,13 +1500,25 @@
<source>Current total balance in watch-only addresses</source>
<translation>Το τρέχον συνολικό υπόλοιπο σε διευθύνσεις παρακολούθησης μόνο</translation>
</message>
</context>
<message>
<source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
<translation>Ενεργοποιήθηκε η κατάσταση ιδιωτικότητας στην καρτέλα Επισκόπησης. Για εμφάνιση των τιμών αποεπιλέξτε το Ρυθμίσεις-&gt;Απόκρυψη τιμών.</translation>
</message>
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation>Διάλογος</translation>
</message>
<message>
<source>Sign Tx</source>
<translation>Υπόγραψε Tx</translation>
</message>
<message>
<source>Broadcast Tx</source>
<translation>Αναμετάδωση Tx</translation>
</message>
<message>
<source>Copy to Clipboard</source>
<translation>Αντιγραφή στο Πρόχειρο</translation>
@@ -1441,10 +1527,59 @@
<source>Save...</source>
<translation>Αποθήκευση...</translation>
</message>
<message>
<source>Close</source>
<translation>Κλείσιμο</translation>
</message>
<message>
<source>Failed to load transaction: %1</source>
<translation>Αποτυχία φόρτωσης μεταφοράς: %1</translation>
</message>
<message>
<source>Failed to sign transaction: %1</source>
<translation>Αποτυχία εκπλήρωσης συναλλαγής: %1</translation>
</message>
<message>
<source>Signed transaction successfully. Transaction is ready to broadcast.</source>
<translation>Η συναλλαγή υπογράφηκε με επιτυχία. Η συναλλαγή είναι έτοιμη για μετάδοση.</translation>
</message>
<message>
<source>Unknown error processing transaction.</source>
<translation>Άγνωστο λάθος επεξεργασίας μεταφοράς.</translation>
</message>
<message>
<source>Transaction broadcast successfully! Transaction ID: %1</source>
<translation>Έγινε επιτυχής αναμετάδοση της συναλλαγής!
ID Συναλλαγής: %1</translation>
</message>
<message>
<source>Transaction broadcast failed: %1</source>
<translation>Η αναμετάδοση της συναλαγής απέτυχε: %1</translation>
</message>
<message>
<source>PSBT copied to clipboard.</source>
<translation>PSBT αντιγράφηκε στο πρόχειρο.</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Αποθήκευση Δεδομένων Συναλλαγής</translation>
</message>
<message>
<source>PSBT saved to disk.</source>
<translation>PSBT αποθηκεύτηκε στο δίσκο.</translation>
</message>
<message>
<source> * Sends %1 to %2</source>
<translation>* Στέλνει %1 προς %2</translation>
</message>
<message>
<source>Unable to calculate transaction fee or total transaction amount.</source>
<translation>Δεν είναι δυνατός ο υπολογισμός των κρατήσεων ή του συνολικού ποσού συναλλαγής.</translation>
</message>
<message>
<source>Pays transaction fee: </source>
<translation>Πληρωμή τέλους συναλλαγής:</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Συνολικό Ποσό</translation>
@@ -1453,7 +1588,23 @@
<source>or</source>
<translation>ή</translation>
</message>
</context>
<message>
<source>(But this wallet cannot sign transactions.)</source>
<translation>(Αλλά αυτό το πορτοφόλι δεν μπορεί να υπογράψει συναλλαγές.)</translation>
</message>
<message>
<source>(But this wallet does not have the right keys.)</source>
<translation>(Αλλά αυτό το πορτοφόλι δεν έχει τα σωστά κλειδιά.)</translation>
</message>
<message>
<source>Transaction is fully signed and ready for broadcast.</source>
<translation>Η συναλλαγή είναι πλήρως υπογεγραμμένη και έτοιμη για αναμετάδωση.</translation>
</message>
<message>
<source>Transaction status is unknown.</source>
<translation>Η κατάσταση της συναλλαγής είναι άγνωστη.</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1618,6 +1769,10 @@
<source>Error: %1</source>
<translation>Σφάλμα: %1</translation>
</message>
<message>
<source>Error initializing settings: %1</source>
<translation>Σφάλμα έναρξης ρυθμίσεω: %1</translation>
</message>
<message>
<source>%1 didn't yet exit safely...</source>
<translation> Το %1 δεν έφυγε ακόμα με ασφάλεια...</translation>
@@ -1792,6 +1947,10 @@
<source>Node window</source>
<translation>Κόμβος παράθυρο</translation>
</message>
<message>
<source>Current block height</source>
<translation>Τωρινό ύψος block</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Ανοίξτε το αρχείο καταγραφής εντοπισμού σφαλμάτων %1 από τον τρέχοντα κατάλογο δεδομένων. Αυτό μπορεί να διαρκέσει μερικά δευτερόλεπτα για τα μεγάλα αρχεία καταγραφής.</translation>
@@ -1804,6 +1963,10 @@
<source>Increase font size</source>
<translation>Αύξηση μεγέθους γραμματοσειράς</translation>
</message>
<message>
<source>Permissions</source>
<translation>Αδειες</translation>
</message>
<message>
<source>Services</source>
<translation>Υπηρεσίες</translation>
@@ -2060,13 +2223,29 @@
<source>Could not unlock wallet.</source>
<translation>Δεν είναι δυνατό το ξεκλείδωμα του πορτοφολιού.</translation>
</message>
</context>
<message>
<source>Could not generate new %1 address</source>
<translation>Δεν πραγματοποιήθηκε παραγωγή νέας %1 διεύθυνσης </translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Request payment to ...</source>
<translation>Αίτημα πληρωμής προς ...</translation>
</message>
<message>
<source>Address:</source>
<translation>Διεύθυνση:</translation>
</message>
<message>
<source>Amount:</source>
<translation>Ποσό:</translation>
</message>
<message>
<source>Label:</source>
<translation>Ετικέτα:</translation>
</message>
<message>
<source>Message:</source>
<translation>Μήνυμα:</translation>
@@ -2338,10 +2517,18 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Are you sure you want to send?</source>
<translation>Είστε βέβαιοι ότι θέλετε να στείλετε;</translation>
</message>
<message>
<source>Create Unsigned</source>
<translation>Δημιουργία Ανυπόγραφου</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Αποθήκευση Δεδομένων Συναλλαγής</translation>
</message>
<message>
<source>PSBT saved</source>
<translation>Το PSBT αποθηκεύτηκε</translation>
</message>
<message>
<source>or</source>
<translation>ή</translation>
@@ -2350,6 +2537,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation> Μπορείτε να αυξήσετε αργότερα την αμοιβή (σήματα Αντικατάσταση-By-Fee, BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Παρακαλούμε, ελέγξτε την πρόταση συναλλαγής. Θα παραχθεί μια συναλλαγή Bitcoin με μερική υπογραφή (PSBT), την οποία μπορείτε να αντιγράψετε και στη συνέχεια να υπογράψετε με π.χ. ένα πορτοφόλι %1 εκτός σύνδεσης ή ένα πορτοφόλι υλικού συμβατό με το PSBT.</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Παρακαλούμε, ελέγξτε τη συναλλαγή σας.</translation>
@@ -3161,9 +3352,25 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled.</source>
<translation>Το κλείσιμο του πορτοφολιού για πολύ μεγάλο χρονικό διάστημα μπορεί να οδηγήσει στην επανασύνδεση ολόκληρης της αλυσίδας αν είναι ενεργοποιημένη η περικοπή.</translation>
</message>
</context>
<message>
<source>Close all wallets</source>
<translation>Κλείσιμο όλων των πορτοφολιών</translation>
</message>
<message>
<source>Are you sure you wish to close all wallets?</source>
<translation>Είσαι σίγουροι ότι επιθυμείτε το κλείσιμο όλων των πορτοφολιών;</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>No wallet has been loaded.
Go to File &gt; Open Wallet to load a wallet.
- OR -</source>
<translation>Δεν έχει φορτωθεί κανένα πορτοφόλι.
Μεταβείτε στο Αρχείο&gt;Άνοιγμα πορτοφολιού για φόρτωση.
-Η-</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Δημιουργία νέου Πορτοφολιού</translation>
@@ -3242,6 +3449,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Error</source>
<translation>Σφάλμα</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>Φόρτωση δεδομένων συναλλαγής</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>Αντίγραφο ασφαλείας Πορτοφολιού</translation>
@@ -3421,6 +3632,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Failed to rescan the wallet during initialization</source>
<translation>Αποτυχία επανεγγραφής του πορτοφολιού κατά την αρχικοποίηση</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation>Η επιβεβαίωση της βάσης δεδομένων απέτυχε</translation>
</message>
<message>
<source>Importing...</source>
<translation>Εισαγωγή...</translation>
@@ -3537,6 +3752,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation>Πρέπει να ξαναφτιάξετε τη βάση δεδομένων χρησιμοποιώντας το -reindex για να επιστρέψετε στη λειτουργία χωρίς εκτύπωση. Αυτό θα ξαναφορτώσει ολόκληρο το blockchain</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation>Αποθηκευτικός χώρος πολύ μικρός!</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation>Σφάλμα ανάγνωσης από τη βάση δεδομένων, γίνεται τερματισμός.</translation>

View File

@@ -838,7 +838,7 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../bitcoin.cpp" line="+418"/>
<location filename="../bitcoin.cpp" line="+419"/>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation type="unfinished"></translation>
</message>
@@ -1059,12 +1059,17 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+38"/>
<location line="+24"/>
<source>Wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-13"/>
<source>Wallet Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+22"/>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation type="unfinished"></translation>
</message>
@@ -1074,7 +1079,12 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+19"/>
<location line="+26"/>
<source>Advanced Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+9"/>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation type="unfinished"></translation>
</message>
@@ -1084,7 +1094,7 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+7"/>
<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 type="unfinished"></translation>
</message>
@@ -1094,7 +1104,7 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+7"/>
<source>Use descriptors for scriptPubKey management</source>
<translation type="unfinished"></translation>
</message>
@@ -1109,7 +1119,7 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<location line="+36"/>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation type="unfinished"></translation>
</message>
@@ -1897,7 +1907,7 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../overviewpage.cpp" line="+166"/>
<location filename="../overviewpage.cpp" line="+191"/>
<source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
<translation type="unfinished"></translation>
</message>
@@ -2270,7 +2280,7 @@ Signing is only possible with addresses of the type &apos;legacy&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../bitcoin.cpp" line="+105"/>
<location filename="../bitcoin.cpp" line="+112"/>
<source>Error: Specified data directory &quot;%1&quot; does not exist.</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -884,7 +884,7 @@ Signing is only possible with addresses of the type 'legacy'.</translation>
<source>Create</source>
<translation>Create</translation>
</message>
</context>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -3973,10 +3973,6 @@ Go to File &gt; Open Wallet to load a wallet.
<source>%s is set very high!</source>
<translation>%s is set very high!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>

View File

@@ -69,6 +69,11 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Jen viaj Bitmon-adresoj por sendi pagojn. Zorge kontrolu la sumon kaj la alsendan adreson antaŭ ol sendi.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Jen viaj bitmonaj adresoj por ricevi pagojn. Estas konsilinde uzi apartan ricevan adreson por ĉiu transakcio.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopii Adreson</translation>
@@ -131,6 +136,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 +180,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 +239,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 +282,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 +298,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 +318,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 retajn agadojn.</translation>
</message>
<message>
<source>Network activity disabled.</source>
<translation>Retaj agadoj malebliĝas.</translation>
</message>
<message>
<source>Click to enable network activity again.</source>
<translation>Alklaki por denove ebligi retajn agadojn.</translation>
</message>
<message>
<source>Reindexing blocks on disk...</source>
<translation>Reindeksado de blokoj sur disko...</translation>
@@ -385,14 +450,58 @@
<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>Close All Wallets...</source>
<translation>Fermi Ĉiujn Monujojn...</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Fermi ĉiujn monujojn</translation>
</message>
<message>
<source>default wallet</source>
<translation>defaŭlta monujo</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>&amp;Fenestro</translation>
</message>
<message>
<source>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>Averto: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -403,6 +512,12 @@
<source>Amount: %1
</source>
<translation>Sumo: %1
</translation>
</message>
<message>
<source>Wallet: %1
</source>
<translation>Monujo: %1
</translation>
</message>
<message>
@@ -439,9 +554,21 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Monujo estas &lt;b&gt;ĉifrita&lt;/b&gt; kaj aktuale &lt;b&gt;ŝlosita&lt;/b&gt;</translation>
</message>
</context>
<message>
<source>Original message:</source>
<translation>Originala mesaĝo:</translation>
</message>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation>Neriparebla eraro okazis. %1 ne plu sekure povas daŭri kaj ĝi ĉesiĝos.</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Coin Selection</source>
<translation>Monero-Elektaĵo</translation>
</message>
<message>
<source>Quantity:</source>
<translation>Kvanto:</translation>
@@ -581,9 +708,45 @@
</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>
<message>
<source>Create Wallet</source>
<translation>Krei Monujon</translation>
</message>
<message>
<source>Wallet</source>
<translation>Monujo</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>
@@ -661,6 +824,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>
@@ -672,6 +839,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>
@@ -699,13 +870,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>
@@ -713,7 +916,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>
@@ -724,10 +943,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>
@@ -851,6 +1086,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>
@@ -890,6 +1129,18 @@
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Save...</source>
<translation>Konservi...</translation>
</message>
<message>
<source>Close</source>
<translation>Fermi</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Totala Sumo</translation>
</message>
<message>
<source>or</source>
<translation></translation>
@@ -951,10 +1202,34 @@
<source>N/A</source>
<translation>neaplikebla</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation><numerusform>%n sekundo</numerusform><numerusform>%n sekundoj</numerusform></translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation><numerusform>%n minuto</numerusform><numerusform>%n minutoj</numerusform></translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation><numerusform>%n horo</numerusform><numerusform>%n horoj</numerusform></translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation><numerusform>%n tago</numerusform><numerusform>%n tagoj</numerusform></translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation><numerusform>%n semajno</numerusform><numerusform>%n semajnoj</numerusform></translation>
</message>
<message>
<source>%1 and %2</source>
<translation>%1 kaj %2</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation><numerusform>%n jaro</numerusform><numerusform>%n jaroj</numerusform></translation>
</message>
<message>
<source>%1 B</source>
<translation>%1 B</translation>
@@ -975,6 +1250,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>
@@ -1045,6 +1324,10 @@
<source>Block chain</source>
<translation>Blokĉeno</translation>
</message>
<message>
<source>Wallet: </source>
<translation>Monujo:</translation>
</message>
<message>
<source>Received</source>
<translation>Ricevita</translation>
@@ -1109,7 +1392,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>
@@ -1159,6 +1470,10 @@
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address:</source>
<translation>Adreso:</translation>
</message>
<message>
<source>Amount:</source>
<translation>Sumo:</translation>
@@ -1171,6 +1486,10 @@
<source>Message:</source>
<translation>Mesaĝo:</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Monujo:</translation>
</message>
<message>
<source>Copy &amp;URI</source>
<translation>Kopii &amp;URI</translation>
@@ -1261,6 +1580,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>
@@ -1337,10 +1660,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>
@@ -1875,17 +2206,33 @@
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Fermi monujon</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Fermi ĉiujn monujojn</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
</context>
<message>
<source>Create a new wallet</source>
<translation>Krei novan monujon</translation>
</message>
</context>
<context>
<name>WalletModel</name>
<message>
<source>Send Coins</source>
<translation>Sendi Bitmonon</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>defaŭlta monujo</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

View File

@@ -3,11 +3,11 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Haz click con el botón derecho para editar una dirección o etiqueta</translation>
<translation>haz click derecho para editar dirección o etiqueta</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Crear una dirección nueva</translation>
<translation>crear un nueva direccion</translation>
</message>
<message>
<source>&amp;New</source>
@@ -43,7 +43,7 @@
</message>
<message>
<source>&amp;Delete</source>
<translation>&amp;Borrar</translation>
<translation>Borrar</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
@@ -143,23 +143,23 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Cifrar cartera</translation>
<translation>Cifrar billetera</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation>Esta operación necesita la contraseña para desbloquear la cartera</translation>
<translation>Esta operación necesita la contraseña para desbloquear la billetera.</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation>Desbloquear cartera</translation>
<translation>Desbloquear billetera</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation>Esta operación necesita la contraseña para desbloquear la cartera.</translation>
<translation>Esta operación necesita la contraseña para desbloquear la billetera.</translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation>Descifrar cartera</translation>
<translation>Descifrar billetera</translation>
</message>
<message>
<source>Change passphrase</source>
@@ -167,7 +167,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation>Confirma el cifrado de esta cartera</translation>
<translation>Confirma el cifrado de esta billetera</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>
@@ -175,47 +175,47 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation>¿Seguro que quieres cifrar tu cartera?</translation>
<translation>¿Seguro que quieres cifrar tu billetera?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation>Cartera encriptada</translation>
<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>Introduce la contraseña nueva para la cartera. &lt;br/&gt;Por favor utiliza una contraseña de &lt;b&gt;diez o más caracteres aleatorios&lt;/b&gt;, u &lt;b&gt;ocho o más palabras&lt;/b&gt;.</translation>
<translation>Introduce la contraseña nueva para la billetera. &lt;br/&gt;Por favor utiliza una contraseña de &lt;b&gt;diez o más caracteres aleatorios&lt;/b&gt;, u &lt;b&gt;ocho o más palabras&lt;/b&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Introduce la contraseña antigua y la nueva para la cartera.</translation>
<translation>Introduce la contraseña antigua y la nueva 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 cifrar tu cartera no garantiza la protección de tus bitcoin si tu ordenador es infectado con malware.</translation>
<translation>Recuerda que cifrar tu billetera no garantiza la protección de tus bitcoin si tu ordenador es infectado con malware.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Cartera a cifrar</translation>
<translation>Billetera a cifrar</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Tu cartera va a ser cifrada</translation>
<translation>Tu billetera va a ser cifrada</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Tu cartera ya está cifrada</translation>
<translation>Tu billetera ya está 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: Cualquier copia de seguridad que hayas hecho del archivo de tu cartera debe ser reemplazada por el archivo cifrado de la cartera recién generado. Por razones de seguridad, las copias de seguridad anteriores del archivo de la cartera sin cifrar serán inútiles cuando empiece a usar la nueva cartera cifrada.</translation>
<translation>IMPORTANTE: Cualquier copia de seguridad que hayas hecho del archivo de tu billetera debe ser reemplazada por el archivo cifrado de la billetera recién generado. Por razones de seguridad, las copias de seguridad anteriores del archivo de la billetera sin cifrar serán inútiles cuando empiece a usar la nueva billetera cifrada.</translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation>El cifrado de la cartera ha fallado</translation>
<translation>El cifrado de la billetera ha fallado</translation>
</message>
<message>
<source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
<translation>El cifrado de la cartera ha fallado debido a un error interno. Tu cartera no ha sido cifrada.</translation>
<translation>El cifrado de la billetera ha fallado debido a un error interno. Tu billetera no ha sido cifrada.</translation>
</message>
<message>
<source>The supplied passphrases do not match.</source>
@@ -223,19 +223,19 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Wallet unlock failed</source>
<translation>El desbloqueo de la cartera ha fallado</translation>
<translation>El desbloqueo de la billetera ha fallado</translation>
</message>
<message>
<source>The passphrase entered for the wallet decryption was incorrect.</source>
<translation>La contraseña introducida descifrar la cartera es incorrecta.</translation>
<translation>La contraseña introducida descifrar la billetera es incorrecta.</translation>
</message>
<message>
<source>Wallet decryption failed</source>
<translation>El descifrado de la cartera ha fallado</translation>
<translation>El descifrado de la billetera ha fallado</translation>
</message>
<message>
<source>Wallet passphrase was successfully changed.</source>
<translation>La contraseña de la cartera ha sido cambiada.</translation>
<translation>La contraseña de la billetera ha sido cambiada.</translation>
</message>
<message>
<source>Warning: The Caps Lock key is on!</source>
@@ -269,7 +269,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Show general overview of wallet</source>
<translation>Mostrar vista general de la cartera</translation>
<translation>Mostrar vista general de la billetera</translation>
</message>
<message>
<source>&amp;Transactions</source>
@@ -313,11 +313,11 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>&amp;Encrypt Wallet...</source>
<translation>&amp;Cifrar cartera</translation>
<translation>&amp;Cifrar billetera</translation>
</message>
<message>
<source>&amp;Backup Wallet...</source>
<translation>&amp;Copia de seguridad de la cartera...</translation>
<translation>&amp;Copia de seguridad de la billetera...</translation>
</message>
<message>
<source>&amp;Change Passphrase...</source>
@@ -329,15 +329,15 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Crear cartera...</translation>
<translation>Crear billetera...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crear nueva cartera</translation>
<translation>Crear nueva billetera</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Cartera:</translation>
<translation>Billetera:</translation>
</message>
<message>
<source>Click to disable network activity.</source>
@@ -397,7 +397,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
<translation>Cifrar las claves privadas que pertenecen a tu cartera</translation>
<translation>Cifrar las claves privadas que pertenecen a tu billetera</translation>
</message>
<message>
<source>Sign messages with your Bitcoin addresses to prove you own them</source>
@@ -521,27 +521,27 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Abrir cartera</translation>
<translation>Abrir billetera</translation>
</message>
<message>
<source>Open a wallet</source>
<translation>Abrir una cartera</translation>
<translation>Abrir una billetera</translation>
</message>
<message>
<source>Close Wallet...</source>
<translation>Cerrar cartera...</translation>
<translation>Cerrar billetera...</translation>
</message>
<message>
<source>Close wallet</source>
<translation>Cerrar cartera</translation>
<translation>Cerrar billetera</translation>
</message>
<message>
<source>Close All Wallets...</source>
<translation>Cerrar todas las carteras...</translation>
<translation>Cerrar todas las billeteras...</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Cerrar todas las carteras</translation>
<translation>Cerrar todas las billeteras</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
@@ -557,11 +557,11 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>default wallet</source>
<translation>Cartera predeterminada</translation>
<translation>Billetera predeterminada</translation>
</message>
<message>
<source>No wallets available</source>
<translation>No hay carteras disponibles</translation>
<translation>No hay billeteras disponibles</translation>
</message>
<message>
<source>&amp;Window</source>
@@ -614,7 +614,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
<message>
<source>Wallet: %1
</source>
<translation>Cartera: %1
<translation>Billetera: %1
</translation>
</message>
<message>
@@ -661,7 +661,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>La cartera está &lt;b&gt;cifrada&lt;/b&gt; y &lt;b&gt;bloqueada&lt;/b&gt;</translation>
<translation>La billetera está &lt;b&gt;cifrada&lt;/b&gt; y &lt;b&gt;bloqueada&lt;/b&gt;</translation>
</message>
<message>
<source>Original message:</source>
@@ -831,7 +831,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>Error al crear cartera</translation>
<translation>Error al crear billetera</translation>
</message>
<message>
<source>Create wallet warning</source>
@@ -844,6 +844,10 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
<source>Create Wallet</source>
<translation>Crear monedero</translation>
</message>
<message>
<source>Wallet</source>
<translation>Monedero</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Nombre de monedero</translation>
@@ -856,6 +860,10 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
<source>Encrypt Wallet</source>
<translation>Cifrar monedero</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Opciones avanzadas</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 las claves privadas para este monedero. Los monederos con claves privadas deshabilitadas no tendrán claves privadas y no podrán tener ni una semilla HD ni claves privadas importadas. Esto es ideal para monederos de solo lectura.</translation>
@@ -884,6 +892,10 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
<source>Create</source>
<translation>Crear</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Compilado sin soporte de sqlite (requerido para billeteras descriptoras)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1038,7 +1050,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>The wallet will also be stored in this directory.</source>
<translation>La cartera también se almacenará en este directorio.</translation>
<translation>La billetera también se almacenará en este directorio.</translation>
</message>
<message>
<source>Error: Specified data directory "%1" cannot be created.</source>
@@ -1139,7 +1151,7 @@ Firmar solo es posible con correos del tipo Legacy.</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Ver aviso sobre la cartera</translation>
<translation>Ver aviso sobre la billetera</translation>
</message>
<message>
<source>default wallet</source>
@@ -3377,7 +3389,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Close all wallets</source>
<translation>Cerrar todas las carteras</translation>
<translation>Cerrar todas las billeteras</translation>
</message>
<message>
<source>Are you sure you wish to close all wallets?</source>
@@ -3472,6 +3484,10 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<source>Unable to decode PSBT from clipboard (invalid base64)</source>
<translation>No se puede decodificar PSBT desde el portapapeles (inválido base64)</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>Cargar datos de la transacción</translation>
@@ -3555,6 +3571,10 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Error leyendo %s!. Todas las claves se han leído correctamente, pero los datos de la transacción o el libro de direcciones pueden faltar o ser incorrectos.</translation>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation>Se proporciona más de una dirección de ligar de cebolla. Utilizando %s para el servicio Tor cebolla creado automático.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>¡Por favor, compruebe si la fecha y hora en su computadora son correctas! Si su reloj está mal, %s no trabajará correctamente.</translation>
@@ -3563,6 +3583,18 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>Contribuya si encuentra %s de utilidad. Visite %s para más información acerca del programa.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Fallado para preparar la declaración para traer versión del esquema de la monedero sqlite: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
<translation>SQLiteDatabase: Fallado para preparar la declaración para traer la aplicación id: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation>SQLiteDatabase: versión del esquema de la monedero sqlite desconocido %d. Sólo version %d se admite</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation>La base de datos de bloques contiene un bloque que parece ser del futuro. Esto puede ser porque la fecha y hora de su ordenador están mal ajustados. Reconstruya la base de datos de bloques solo si está seguro de que la fecha y hora de su ordenador están ajustadas correctamente.</translation>
@@ -3671,6 +3703,10 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Failed to verify database</source>
<translation>No se ha podido verificar la base de datos</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation>No hacer caso de duplicado -wallet %s</translation>
</message>
<message>
<source>Importing...</source>
<translation>Importando...</translation>
@@ -3699,6 +3735,30 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>Monto inválido para -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation>SQLiteDatabase: Fallado para ejecutar declaración para verificar base de datos: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Fallado para traer versión del esquema de la monedero sqlite: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch the application id: %s</source>
<translation>SQLiteDatabase: Error al obtener el ID de aplicación: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation>SQLiteDatabase: Fallado para preparar declaración para verificar base de datos: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation>SQLiteDatabase: Error al leer la verificación de la base de datos: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation>SQLiteDatabase: id aplicación inesperada. Esperado %u, tiene %u</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>El directorio de bloques «%s» especificado no existe.</translation>
@@ -3761,7 +3821,7 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation>Categoría de registro no soportada %s=%s.</translation>
<translation>Categoría de registro no soportada %s=%s. </translation>
</message>
<message>
<source>Upgrading UTXO database</source>
@@ -3783,6 +3843,14 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Error: Listening for incoming connections failed (listen returned error %s)</source>
<translation>Error: La escucha para conexiones entrantes falló (la escucha devolvió el error %s)</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation>%s corrupto. Intente utilizar la monedero herramienta de bitcoin-monedero para salvar o restaurar una copia de seguridad.</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use version 169900 or no version specified.</source>
<translation>No es posible actualizar un monedero HD dividido sin actualizar el soporte para admitir el keypool pre dividido. Porfavor usa -upgradewallet=169900 o -upgradewallet sin especificar una versión.</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>Cantidad no válida para -maxtxfee=&lt;amount&gt;: '%s' (debe ser al menos la comisión mínima de %s para prevenir transacciones atascadas)</translation>
@@ -3791,6 +3859,18 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation>Monto de transacción muy pequeño después de la deducción de la comisión</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation>Este error podría ocurrir si la billetera no fuese apagada correctamente y fuese cargada usando una compilación con una versión más nueva de Berkeley DB. Si es así, utilice el software que cargó por última vez en esta billetera.</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation>Esta es la máxima tarifa de transacción que pagas (en adicional a la tarifa normal de transacción) para primordialmente evitar gastar un sobrecosto.</translation>
</message>
<message>
<source>Transaction needs a change address, but we can't generate it. Please call keypoolrefill first.</source>
<translation>La transacción necesita un cambio de dirección, pero no podemos generar una. Porfavor, realice una petición a keypoolrefill antes.</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>Necesita reconstruir la base de datos utilizando -reindex para volver al modo sin recorte. Esto volverá a descargar toda la cadena de bloques</translation>
@@ -3799,6 +3879,10 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>A fatal internal error occurred, see debug.log for details</source>
<translation>Ha ocurrido un error interno grave. Consulte debug.log para más detalles.</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation>No se puede establecer -peerblockfilters sin -blockfilterindex.</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation>¡El espacio en el disco es demasiado bajo!</translation>
@@ -3815,6 +3899,14 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>Error: Disk space is low for %s</source>
<translation>Error: ¡Espacio en disco bajo por %s!</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation>Keypool se ha agotado, llame a keypoolrefill primero</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation>El ratio de comisión (%s) es menor que el mínimo ratio de comisión (%s)</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation>Dirección de -onion o dominio '%s' inválido</translation>
@@ -3929,10 +4021,6 @@ Vaya a Archivo&gt; Abrir monedero para cargar un monedero.
<source>%s is set very high!</source>
<translation>¡%s está configurado muy alto!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error cargando el monedero %s. Se ha especificado un nombre de fichero -wallet duplicado.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Iniciando procesos de red...</translation>

View File

@@ -70,6 +70,12 @@ 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.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Estas son sus direcciones de Bitcoin para recibir los pagos.
Usa el boton "Crear nueva direccion de recibimiento" en la pestaña de recibir para crear una nueva direccion. Firmar es posible solo con la direccion del tipo "legado"</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>Copiar dirección</translation>
@@ -132,6 +138,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 +182,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, u 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 +328,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 +484,38 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>Up to date</source>
<translation>A hoy</translation>
</message>
<message>
<source>&amp;Load PSBT from file...</source>
<translation>&amp;Load PSBT desde el archivo...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation>Cargar transacción de Bitcoin parcialmente firmada</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>
@@ -696,9 +762,29 @@ 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>
<message>
<source>Create Wallet</source>
<translation>Crear Billetera</translation>
</message>
<message>
<source>Wallet</source>
<translation>Billetera</translation>
</message>
<message>
<source>Create</source>
<translation>Crear</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -916,6 +1002,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>
@@ -1241,6 +1331,14 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>Dialog</source>
<translation>Cambiar contraseña</translation>
</message>
<message>
<source>Close</source>
<translation>Cerrar</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Monto total</translation>
</message>
<message>
<source>or</source>
<translation>o</translation>
@@ -1715,6 +1813,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>
@@ -1997,6 +2099,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>
@@ -2683,10 +2789,18 @@ Tarifa de copia</translation>
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Cerrar billetera</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
</context>
<message>
<source>Create a new wallet</source>
<translation>Crear una nueva billetera</translation>
</message>
</context>
<context>
<name>WalletModel</name>
<message>
@@ -2729,7 +2843,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>
@@ -2992,10 +3110,6 @@ Exportar los datos en la pestaña actual a un archivo</translation>
<source>%s is set very high!</source>
<translation>¡%s esta configurado muy alto!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error cargando el monedero %s. Se ha especificado un nombre de fichero -wallet duplicado.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Iniciando procesos de red...</translation>

View File

@@ -69,6 +69,12 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Estas son tus direcciones de Bitcoin para recibir pagos. Siempre revise el monto y la dirección de envío antes de enviar criptomonedas.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation>Estas son tus direcciones Bitcoin para recibir pagos. Usa el botón 'Crear una nueva dirección para recibir' en la pestaña 'Recibir' para crear nuevas direcciones.
Firmar solo es posible con direcciones del tipo 'Legacy'.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Copiar dirección</translation>
@@ -131,6 +137,10 @@
<source>Repeat new passphrase</source>
<translation>Repite 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>Codificar billetera</translation>
@@ -171,6 +181,30 @@
<source>Wallet encrypted</source>
<translation>Billetera codificada</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>Introduce la contraseña nueva para la billetera. &lt;br/&gt;Por favor utiliza una contraseña de &lt;b&gt;diez o más caracteres aleatorios&lt;/b&gt;, u &lt;b&gt;ocho o más palabras&lt;/b&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Ingresa la antigua frase de contraseña y la nueva frase de 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 cifrar tu billetera no garantiza total protección de robo de tus bitcoins si tu ordenador es infectado con malware.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Billetera a cifrar</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Tu billetera esta a punto de ser encriptada.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Tu billetera ha sido 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: Cualquier respaldo anterior que hayas hecho del archivo de tu billetera debe ser reemplazado por el nuevo archivo encriptado que has generado. Por razones de seguridad, todos los respaldos realizados anteriormente serán inutilizables al momento de que utilices tu nueva billetera encriptada.</translation>
@@ -293,6 +327,14 @@
<source>Open &amp;URI...</source>
<translation>Abrir y 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>
@@ -441,10 +483,66 @@
<source>Up to date</source>
<translation>Actualizado</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
<translation>Cargar una transacción de Bitcoin parcialmente firmada desde el Portapapeles</translation>
</message>
<message>
<source>Node window</source>
<translation>Ventana del nodo</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Abrir la consola de depuración y diagnóstico del nodo</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Direcciones de envío</translation>
</message>
<message>
<source>&amp;Receiving addresses</source>
<translation>&amp;Direcciones de entrega</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Abrir un bitcoin: URI</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>Close All Wallets...</source>
<translation>Cerrar todas las billeteras...</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Cerrar todas las billeteras</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Mostrar el mensaje de ayuda %1 para obtener una lista de los posibles comandos de Bitcoin</translation>
</message>
<message>
<source>default wallet</source>
<translation>billetera predeterminada</translation>
</message>
<message>
<source>No wallets available</source>
<translation>No hay billeteras disponibles</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>Ventana</translation>
@@ -453,6 +551,10 @@
<source>Minimize</source>
<translation>Minimizar</translation>
</message>
<message>
<source>Zoom</source>
<translation>Acercar</translation>
</message>
<message>
<source>Main Window</source>
<translation>Ventana principal</translation>
@@ -473,6 +575,10 @@
<source>Error: %1</source>
<translation>Error: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>Advertencia: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -537,6 +643,10 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>La billetera esta &lt;b&gt;codificada&lt;/b&gt; y actualmente &lt;b&gt;bloqueda&lt;/b&gt;</translation>
</message>
<message>
<source>Original message:</source>
<translation>Mensaje original:</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
@@ -692,13 +802,69 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Creando billetera &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>Fallo al crear la billetera</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Advertencia al crear la billetera</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation>Crear Billetera</translation>
</message>
<message>
<source>Wallet</source>
<translation>Cartera</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Nombre de la billetera </translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Encriptar la billetera. La billetera será encriptada con una contraseña de tu elección.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Encriptar la billetera</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Opciones avanzadas</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>Desactivar las claves privadas para esta billetera. Las billeteras con claves privadas desactivadas no tendrán claves privadas y no podrán tener ninguna semilla HD o claves privadas importadas. Esto es ideal para billeteras de solo lectura.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Desactivar las claves privadas</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>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>
<message>
<source>Make Blank Wallet</source>
<translation>Crear billetera vacía</translation>
</message>
<message>
<source>Descriptor Wallet</source>
<translation>Descriptor de la billetera</translation>
</message>
<message>
<source>Create</source>
<translation>Crear</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -906,6 +1072,10 @@
<source>Hide</source>
<translation>Ocultar</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Desconocido. Sincronizando cabeceras (%1, %2%)...</translation>
@@ -920,6 +1090,10 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>default wallet</source>
<translation>billetera predeterminada</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
@@ -1242,11 +1416,35 @@
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation>Dialogo</translation>
</message>
<message>
<source>Save...</source>
<translation>Guardar...</translation>
</message>
<message>
<source>Close</source>
<translation>Cerrar</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Guardar datos de la transacción</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Monto total</translation>
</message>
<message>
<source>or</source>
<translation>o</translation>
</message>
</context>
<message>
<source>Transaction status is unknown.</source>
<translation>El estado de la transacción es desconocido.</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
@@ -1481,6 +1679,14 @@
<source>Memory usage</source>
<translation>Memoria utilizada</translation>
</message>
<message>
<source>Wallet: </source>
<translation>Billetera:</translation>
</message>
<message>
<source>(none)</source>
<translation>(ninguno)</translation>
</message>
<message>
<source>&amp;Reset</source>
<translation>&amp;Reestablecer</translation>
@@ -1530,6 +1736,14 @@
<source>User Agent</source>
<translation>User Agent</translation>
</message>
<message>
<source>Node window</source>
<translation>Ventana del nodo</translation>
</message>
<message>
<source>Current block height</source>
<translation>Altura del bloque actual</translation>
</message>
<message>
<source>Decrease font size</source>
<translation>Disminuir tamaño de fuente</translation>
@@ -1538,6 +1752,10 @@
<source>Increase font size</source>
<translation>Aumentar tamaño de fuente</translation>
</message>
<message>
<source>Permissions</source>
<translation>Permisos</translation>
</message>
<message>
<source>Services</source>
<translation>Servicios</translation>
@@ -1768,10 +1986,18 @@
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address:</source>
<translation>Dirección:</translation>
</message>
<message>
<source>Amount:</source>
<translation>Cantidad:</translation>
</message>
<message>
<source>Label:</source>
<translation>Etiqueta:</translation>
</message>
<message>
<source>Message:</source>
<translation>Mensaje:</translation>
@@ -1927,6 +2153,10 @@
<source>Dust:</source>
<translation>Polvo:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Esconder ajustes de la tarifa de transacción</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation>Objetivo de tiempo de confirmación</translation>
@@ -1979,6 +2209,10 @@
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 bloques)</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>desde la billetera '%1'</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 a %2</translation>
@@ -1987,18 +2221,38 @@
<source>Are you sure you want to send?</source>
<translation>¿Seguro que quiere enviar?</translation>
</message>
<message>
<source>Save Transaction Data</source>
<translation>Guardar datos de la transacción</translation>
</message>
<message>
<source>or</source>
<translation>o</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Por favor, revise su transacción.</translation>
</message>
<message>
<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>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Confirmar la propuesta de transacción</translation>
</message>
<message>
<source>Send</source>
<translation>Enviar</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>La dirección de envío no es válida. Por favor revisala.</translation>
@@ -2015,6 +2269,10 @@
<source>The total exceeds your balance when the %1 transaction fee is included.</source>
<translation>El total sobrepasa tu saldo cuando se incluyen %1 como comisión de envió.</translation>
</message>
<message>
<source>Duplicate address found: addresses should only be used once each.</source>
<translation>Dirección duplicada encontrada: las direcciones sólo deben ser utilizadas una vez.</translation>
</message>
<message>
<source>Transaction creation failed!</source>
<translation>¡Fallo al crear la transacción!</translation>
@@ -2090,6 +2348,10 @@
<source>S&amp;ubtract fee from amount</source>
<translation>Restar comisiones del monto.</translation>
</message>
<message>
<source>Use available balance</source>
<translation>Usar el saldo disponible</translation>
</message>
<message>
<source>Message:</source>
<translation>Mensaje:</translation>
@@ -2224,6 +2486,10 @@
<source>Wallet unlock was cancelled.</source>
<translation>El desbloqueo del monedero fue cancelado.</translation>
</message>
<message>
<source>No error</source>
<translation>No hay error</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>La llave privada para la dirección introducida no está disponible.</translation>
@@ -2681,10 +2947,26 @@
</context>
<context>
<name>WalletController</name>
</context>
<message>
<source>Close wallet</source>
<translation>Cerrar billetera</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Cerrar todas las billeteras</translation>
</message>
<message>
<source>Are you sure you wish to close all wallets?</source>
<translation>¿Está seguro de que desea cerrar todas las billeteras?</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
</context>
<message>
<source>Create a new wallet</source>
<translation>Crear una nueva billetera</translation>
</message>
</context>
<context>
<name>WalletModel</name>
<message>
@@ -2727,7 +3009,11 @@
<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>
@@ -2742,6 +3028,10 @@
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<source>Load Transaction Data</source>
<translation>Cargar datos de la transacción</translation>
</message>
<message>
<source>Backup Wallet</source>
<translation>Respaldar monedero</translation>
@@ -2989,10 +3279,6 @@
<source>%s is set very high!</source>
<translation>¡%s esta configurado muy alto!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error cargando el monedero %s. Se ha especificado un nombre de fichero -wallet duplicado.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Iniciando procesos de red...</translation>

View File

@@ -552,6 +552,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Wallet</source>
<translation>Billetera</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>

View File

@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Click derecho para editar tu dirección o etiqueta</translation>
<translation>Haga clic derecho para editar la dirección o la etiqueta</translation>
</message>
<message>
<source>Create a new address</source>
@@ -847,6 +847,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Create Wallet</source>
<translation>Crear una cartera </translation>
</message>
<message>
<source>Wallet</source>
<translation>Cartera</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Nombre de la cartera </translation>
@@ -859,6 +863,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Encrypt Wallet</source>
<translation>Encripta la cartera</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Opciones avanzadas</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>Desactivar las llaves privadas de esta cartera. Las carteras con las llaves privadas desactivadas no tendrán llaves privadas y no podrán tener una semilla HD o llaves privadas importadas. Esto es ideal para las carteras "watch-only".</translation>
@@ -887,6 +895,10 @@ Solicitar pagos (genera códigos QR y bitcoin: URI)
<source>Create</source>
<translation>Crear</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Compiled without sqlite support (required for descriptor wallets)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -3574,6 +3586,10 @@ Go to File &gt; Open Wallet to load a wallet.
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</translation>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</translation>
@@ -3582,6 +3598,18 @@ Go to File &gt; Open Wallet to load a wallet.
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation>Please contribute if you find %s useful. Visit %s for further information about the software.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Failed to prepare the statement to fetch sqlite wallet schema version: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</source>
<translation>SQLiteDatabase: Failed to prepare the statement to fetch the application id: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</translation>
@@ -3686,6 +3714,14 @@ Go to File &gt; Open Wallet to load a wallet.
<source>Failed to rescan the wallet during initialization</source>
<translation>Falló al volver a escanear la cartera durante la inicialización</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation>No se pudo verificar la base de datos</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation>Ignoring duplicate -wallet %s.</translation>
</message>
<message>
<source>Importing...</source>
<translation>Importando...</translation>
@@ -3714,6 +3750,26 @@ Go to File &gt; Open Wallet to load a wallet.
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation>SQLiteDatabase: Failed to execute statement to verify database: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</source>
<translation>SQLiteDatabase: Failed to fetch sqlite wallet schema version: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to fetch the application id: %s</source>
<translation>SQLiteDatabase: Failed to fetch the application id: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation>SQLiteDatabase: Failed to prepare statement to verify database: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation>SQLiteDatabase: Failed to read database verification error: %s</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Specified blocks directory "%s" does not exist.</translation>
@@ -3976,10 +4032,6 @@ Go to File &gt; Open Wallet to load a wallet.
<source>%s is set very high!</source>
<translation>%s is set very high!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Error loading wallet %s. Duplicate -wallet filename specified.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Starting network threads...</translation>

View File

@@ -175,6 +175,10 @@
<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>
@@ -590,6 +594,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Wallet</source>
<translation>Monedero</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>

View File

@@ -461,6 +461,10 @@
<source>Catching up...</source>
<translation>Jõuan järgi...</translation>
</message>
<message>
<source>Error: %1</source>
<translation>Tõrge %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -632,6 +636,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Wallet</source>
<translation>Rahakott</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -861,7 +869,7 @@
</message>
<message>
<source>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</source>
<translation>Kuvatav info ei pruugi olla ajakohane. Ühenduse loomisel süngitakse sinu rahakott automaatselt Bitconi võrgustikuga, kuid see toiming on hetkel lõpetamata.</translation>
<translation>Kuvatav info ei pruugi olla ajakohane. Ühenduse loomisel süngitakse sinu rahakott automaatselt Bitcoin võrgustikuga, kuid see toiming on hetkel lõpetamata.</translation>
</message>
<message>
<source>Pending:</source>
@@ -971,6 +979,10 @@
<source>%1 GB</source>
<translation>%1 GB</translation>
</message>
<message>
<source>Error: %1</source>
<translation>Tõrge %1</translation>
</message>
<message>
<source>unknown</source>
<translation>tundmatu</translation>

View File

@@ -353,10 +353,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 +389,14 @@
<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, zure jabea zarela 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>
@@ -401,14 +417,46 @@
<source>Tabs toolbar</source>
<translation>Fitxen tresna-barra</translation>
</message>
<message>
<source>Show the list of used sending addresses and labels</source>
<translation>Erakutsi bidalketa-helbideen eta etiketen zerrenda</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>
<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>
<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>
@@ -417,6 +465,10 @@
<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>
@@ -425,6 +477,10 @@
<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>
@@ -441,10 +497,22 @@
<source>Close wallet</source>
<translation>Diruzorroa itxi</translation>
</message>
<message>
<source>Close All Wallets...</source>
<translation>Diruzorro guztiak itxi...</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Diruzorro guztiak 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>
@@ -461,6 +529,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>
@@ -491,6 +567,11 @@
<translation>Diruzorroa: %1
</translation>
</message>
<message>
<source>Type: %1
</source>
<translation>Mota: %1</translation>
</message>
<message>
<source>Label: %1
</source>
@@ -511,6 +592,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 gakoa sortzea &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 gakoa sortzea &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>
@@ -519,6 +612,10 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Zorroa &lt;b&gt;enkriptatuta&lt;/b&gt; eta &lt;b&gt;blokeatuta&lt;/b&gt; dago une honetan</translation>
</message>
<message>
<source>Original message:</source>
<translation>Jatorrizko mezua:</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
@@ -538,18 +635,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>
@@ -570,6 +691,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>
@@ -597,13 +754,21 @@
<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>
<source>Create Wallet</source>
<translation>Diruzorroa sortu</translation>
</message>
<message>
<source>Wallet</source>
<translation>Diru-zorroa</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Diruzorroaren izena</translation>
@@ -612,11 +777,23 @@
<source>Encrypt Wallet</source>
<translation>Diruzorroa enkriptatu</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Aukera aurreratuak</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Desgaitu gako pribatuak</translation>
</message>
<message>
<source>Descriptor Wallet</source>
<translation>Deskriptorearen zorroa</translation>
</message>
<message>
<source>Create</source>
<translation>Sortu</translation>
</message>
</context>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -665,7 +842,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>
@@ -691,6 +876,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>
@@ -699,6 +888,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>
@@ -707,9 +900,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>
@@ -729,7 +930,11 @@
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
</context>
<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>
@@ -744,6 +949,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>
@@ -756,6 +1033,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>
@@ -768,10 +1049,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>
@@ -791,10 +1084,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>
@@ -802,12 +1107,40 @@
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Copy to Clipboard</source>
<translation>Kopiatu arbelera</translation>
</message>
<message>
<source>Save...</source>
<translation>Gorde...</translation>
</message>
<message>
<source>Close</source>
<translation>Itxi</translation>
</message>
</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>
@@ -829,6 +1162,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>
@@ -852,6 +1193,10 @@
<source>Copy label</source>
<translation>Etiketa kopiatu</translation>
</message>
<message>
<source>Copy amount</source>
<translation>zenbatekoaren kopia</translation>
</message>
<message>
<source>Could not unlock wallet.</source>
<translation>Ezin da diruzorroa desblokeatu.</translation>
@@ -913,6 +1258,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>
@@ -937,6 +1290,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>
@@ -1002,6 +1375,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>
@@ -1012,6 +1401,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>
@@ -1020,14 +1413,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>
@@ -1090,6 +1535,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>
@@ -1177,6 +1626,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>
@@ -1215,6 +1672,10 @@
<source>Close wallet</source>
<translation>Diruzorroa itxi</translation>
</message>
<message>
<source>Close all wallets</source>
<translation>Diruzorro guztiak itxi</translation>
</message>
</context>
<context>
<name>WalletFrame</name>

File diff suppressed because it is too large Load Diff

View File

@@ -183,7 +183,7 @@ Allekirjoitus on mahdollista vain 'legacy'-tyyppisillä osoitteilla.</translatio
</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ä salasanalausetta, jossa on &lt;b&gt;vähintään kymmenen sattumanvaraista merkkiä tai &lt;b&gt;vähintään kahdeksan sanaa&lt;/b&gt; .</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
@@ -844,6 +844,10 @@ Allekirjoitus on mahdollista vain 'legacy'-tyyppisillä osoitteilla.</translatio
<source>Create Wallet</source>
<translation>Luo lompakko</translation>
</message>
<message>
<source>Wallet</source>
<translation>Lompakko</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Lompakon nimi</translation>
@@ -856,6 +860,10 @@ Allekirjoitus on mahdollista vain 'legacy'-tyyppisillä osoitteilla.</translatio
<source>Encrypt Wallet</source>
<translation>Salaa lompakko</translation>
</message>
<message>
<source>Advanced Options</source>
<translation>Lisäasetukset</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>
@@ -884,6 +892,10 @@ Allekirjoitus on mahdollista vain 'legacy'-tyyppisillä osoitteilla.</translatio
<source>Create</source>
<translation>Luo</translation>
</message>
<message>
<source>Compiled without sqlite support (required for descriptor wallets)</source>
<translation>Koostettu ilman sqlite-tukea (vaaditaan descriptor-lompakoille)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1206,7 +1218,7 @@ Allekirjoitus on mahdollista vain 'legacy'-tyyppisillä osoitteilla.</translatio
</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>
@@ -3691,6 +3703,10 @@ Siirry osioon Tiedosto &gt; Avaa lompakko ladataksesi lompakon.
<source>Failed to verify database</source>
<translation>Tietokannan todennus epäonnistui</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation>Ohitetaan kaksois -lompakko %s.</translation>
</message>
<message>
<source>Importing...</source>
<translation>Tuodaan...</translation>
@@ -3997,10 +4013,6 @@ Siirry osioon Tiedosto &gt; Avaa lompakko ladataksesi lompakon.
<source>%s is set very high!</source>
<translation>%s on asetettu todella korkeaksi!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Virhe ladattaessa lompakkoa %s. -wallet -tiedostonimi esiintyy useaan kertaan.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Käynnistetään verkkoa...</translation>

View File

@@ -177,7 +177,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>Ipasok ang bagong passphrase para sa wallet. (1)Mangyaring gumamit ng isang passphrase na(2) sampu o higit pang mga random na character(2), o (3)walo o higit pang mga salita(3).</translation>
<translation>Ipasok ang bagong passphrase para sa wallet. &lt;br/&gt;Mangyaring gumamit ng isang passphrase na may &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>
@@ -473,6 +473,10 @@
<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>
@@ -481,6 +485,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>
@@ -605,6 +613,10 @@
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation>Walet ay na-encrypt at kasalukuyang naka-lock.</translation>
</message>
<message>
<source>Original message:</source>
<translation>Orihinal na mensahe:</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
@@ -759,6 +771,10 @@
</context>
<context>
<name>CreateWalletActivity</name>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Lumilikha ng Wallet 1 %1 1...</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>Nabigo ang Pag likha ng Pitaka</translation>
@@ -774,14 +790,34 @@
<source>Create Wallet</source>
<translation>Gumawa ng Pitaka</translation>
</message>
<message>
<source>Wallet</source>
<translation>Walet</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>
@@ -790,7 +826,7 @@
<source>Create</source>
<translation>Gumawa</translation>
</message>
</context>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -902,6 +938,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>
@@ -922,6 +962,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>
@@ -1001,6 +1045,10 @@
<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>
@@ -1008,6 +1056,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>
@@ -1122,6 +1174,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>
@@ -1369,9 +1425,65 @@
<source>Current total balance in watch-only addresses</source>
<translation>Kasalukuyang kabuuan ng balanse sa mga watch-only address</translation>
</message>
</context>
<message>
<source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
<translation>Na-activate ang mode ng privacy para sa tab na Pangkalahatang-ideya. Upang ma-unkkan ang mga halaga, alisan ng check ang Mga Setting-&gt; Mga halaga ng mask.</translation>
</message>
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
<message>
<source>Sign Tx</source>
<translation>I-sign ang Tx</translation>
</message>
<message>
<source>Broadcast Tx</source>
<translation>I-broadcast ang Tx</translation>
</message>
<message>
<source>Copy to Clipboard</source>
<translation>Kopyahin sa clipboard</translation>
</message>
<message>
<source>Save...</source>
<translation>I-save ...</translation>
</message>
<message>
<source>Close</source>
<translation>Isara</translation>
</message>
<message>
<source>Failed to load transaction: %1</source>
<translation>Nabigong i-load ang transaksyon: %1</translation>
</message>
<message>
<source>Failed to sign transaction: %1</source>
<translation>Nabigong pumirma sa transaksyon: %1</translation>
</message>
<message>
<source>Could not sign any more inputs.</source>
<translation>Hindi makapag-sign ng anumang karagdagang mga input.</translation>
</message>
<message>
<source>Signed %1 inputs, but more signatures are still required.</source>
<translation>Naka-sign %1 na mga input, ngunit kailangan pa ng maraming mga lagda.</translation>
</message>
<message>
<source>Signed transaction successfully. Transaction is ready to broadcast.</source>
<translation>Matagumpay na nag-sign transaksyon. Handa nang i-broadcast ang transaksyon.</translation>
</message>
<message>
<source>Unknown error processing transaction.</source>
<translation>Hindi kilalang error sa pagproseso ng transaksyon.</translation>
</message>
<message>
<source>Transaction broadcast successfully! Transaction ID: %1</source>
<translation>%1</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Kabuuang Halaga</translation>
@@ -1399,6 +1511,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>
@@ -2387,6 +2511,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>
@@ -2513,6 +2641,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>
@@ -2723,6 +2859,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>
@@ -3046,6 +3186,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>
@@ -3076,6 +3220,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>
@@ -3186,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>
@@ -3250,6 +3402,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>
@@ -3302,6 +3462,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>
@@ -3318,6 +3486,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>
@@ -3434,6 +3610,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>
@@ -3492,6 +3672,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>
@@ -3516,10 +3700,6 @@ Tandaan: Dahil ang bayad ay kinakalkula sa bawat-byte na batayan, ang bayad ng
<source>%s is set very high!</source>
<translation>Ang %s ay nakatakda ng napakataas!</translation>
</message>
<message>
<source>Error loading wallet %s. Duplicate -wallet filename specified.</source>
<translation>Kamalian sa paglo-load ng walet %s. Duplicate -wallet filename na tinukoy.</translation>
</message>
<message>
<source>Starting network threads...</source>
<translation>Pagsisimula ng mga thread ng network...</translation>

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

1921
src/qt/locale/bitcoin_gl.ts Normal file

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