Compare commits

..

40 Commits

Author SHA1 Message Date
fanquake
dd314fe0c2 Merge bitcoin/bitcoin#26503: [24.x] bump version to v24.0
0ee1cfe94a doc: add 24.0 release notes (fanquake)
7b9d904c68 doc: Generate manual pages for 24.0 final (fanquake)
7c8e5e69d9 build: Bump version to 24.0 final (fanquake)

Pull request description:

  Bump version to v24.0.
  Regenerate manpages.
  Pull in the release notes from [the devwiki](https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Notes-draft):
  - I've added the credits section; please comment if a name is missing / needs amending.
  - I've dropped any content-less sections.
  - If there are items that should be in the release notes, and are still missing, please comment.

ACKs for top commit:
  0xB10C:
    ACK 0ee1cfe94a

Tree-SHA512: b2e9477f515709faf3991a5b4aa4b300cb24178e282bf544e0b86a2cb18e8d79f5f42e65addbf90d74862b816d333735c2793f1bcb50e1b0ed0974ea5821f909
2022-11-17 11:48:01 +00:00
fanquake
0ee1cfe94a doc: add 24.0 release notes 2022-11-17 10:04:07 +00:00
fanquake
7b9d904c68 doc: Generate manual pages for 24.0 final 2022-11-15 10:03:33 +00:00
fanquake
7c8e5e69d9 build: Bump version to 24.0 final 2022-11-15 09:56:30 +00:00
MacroFake
dce93b2dd7 Merge bitcoin/bitcoin#26475: [24.x] Bump version to 24.0rc4
da1e753eeb doc: Generate manual pages for 24.0rc4 (fanquake)
1e4db14df9 build: Bump version to 24.0rc4 (fanquake)

Pull request description:

  Bump version.
  Regen manpages.
  Hopefully the final rc given no further bugs / major issues.

ACKs for top commit:
  dergoegge:
    ACK da1e753eeb
  hebasto:
    ACK da1e753eeb

Tree-SHA512: aa1e6c44f0d0acdc7348587fc085540e6ea87e09fe9ec5f5856a572f9bbb9ec89c1e16a8c767e26168b32802735108021dd08da3a21d7238296fd7e9c3377d30
2022-11-09 15:32:43 +01:00
MacroFake
4cc994e9d6 Merge bitcoin/bitcoin#26476: qt: 24.0rc4 translations update
7948fdd060 qt: 24.0rc4 translations update (Hennadii Stepanov)

Pull request description:

  This PR pulls the recent translations from the [Transifex.com](https://www.transifex.com/bitcoin/bitcoin) using the [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) tool.

  According to our [Release Process docs](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#before-every-release-candidate), it is supposed to be merged (just) before `v24.0rc4` tagging.

  Will keep this PR updated regularly until merging.

Top commit has no ACKs.

Tree-SHA512: 600e07bbd48116726899b60086acf1e507722bf7458c78f812e13110e58f67cefc6dd8833fcfeb649b40285b706ab89c2ee88a7ac9f6aeb4fc935e47c33f6bdc
2022-11-09 15:31:30 +01:00
Hennadii Stepanov
7948fdd060 qt: 24.0rc4 translations update 2022-11-09 11:22:59 +00:00
fanquake
da1e753eeb doc: Generate manual pages for 24.0rc4 2022-11-09 10:33:44 +00:00
fanquake
1e4db14df9 build: Bump version to 24.0rc4 2022-11-09 10:30:40 +00:00
fanquake
2a5d9818ed Merge bitcoin/bitcoin#26452: [24.x] rc4 backports
42c74a0a4c rpc: doc: add missing option "bech32m" for `change_type` parameters (Sebastian Falbesoner)
6e4d87e696 tests: Test Taproot PSBT signing with keys in other descriptor (Andrew Chow)
0a5ea2aa84 tests: Use new wallets for each test in wallet_taproot.py (Andrew Chow)
2159676b6e psbt: Include output pubkey in additional pubkeys to sign (Andrew Chow)
754eefd21c sign: Fill in taproot pubkey info for all script path sigs (Andrew Chow)
bb1fabda30 doc: mention BIP86 in doc/bips.md (Sebastian Falbesoner)

Pull request description:

  Currently backports:
  * https://github.com/bitcoin/bitcoin/pull/26418
  * https://github.com/bitcoin/bitcoin/pull/26443
  * https://github.com/bitcoin/bitcoin/pull/26449

ACKs for top commit:
  dergoegge:
    ACK 42c74a0a4c

Tree-SHA512: e40f57b28cc4c06fc9dedebad6c9ab647fa0b98af1aef2d36874c6a05d39164c99fd763a2eb9ca162b7e276aa2e7d0f5934465ab4d7c1f5ba4a3162087e7089f
2022-11-09 10:28:17 +00:00
Sebastian Falbesoner
42c74a0a4c rpc: doc: add missing option "bech32m" for change_type parameters
Affects the help of the `fundrawtransaction`, `send` and
`walletcratefundedpsbt` RPCs.

Github-Pull: #26449
Rebased-From: c3b1fe59db
2022-11-07 10:32:10 +00:00
Andrew Chow
6e4d87e696 tests: Test Taproot PSBT signing with keys in other descriptor
Test that the same keys included in other descriptors will still be able
to sign a PSBT that requires those keys.

Github-Pull: #26418
Rebased-From: 0de30ed509
2022-11-04 15:56:51 +00:00
Andrew Chow
0a5ea2aa84 tests: Use new wallets for each test in wallet_taproot.py
To avoid a wallet potentially being able to sign a transaction using
keys from descriptors imported in previous tests, make new wallets for
each test case rather than sharing them.

Github-Pull: #26418
Rebased-From: 6efcdf6b7f
2022-11-04 15:56:18 +00:00
Andrew Chow
2159676b6e psbt: Include output pubkey in additional pubkeys to sign
In addition to the pubkeys in hd_keypaths and tap_bip32_keypaths, also
see if the descriptor can produce a SigningProvider for the output
pubkey.

Also slightly refactors this area to reduce code duplication.

Github-Pull: #26418
Rebased-From: 8781a1b6bb
2022-11-04 15:55:48 +00:00
Andrew Chow
754eefd21c sign: Fill in taproot pubkey info for all script path sigs
Taproot pubkey info was not being added for multi_a signing. The filling
of this info is moved into the common function CreateTaprootScriptSig so
that any signing of taproot scripts will include the pubkey info.

Github-Pull: #26418
Rebased-From: 323890d0d7
2022-11-04 15:55:16 +00:00
Sebastian Falbesoner
bb1fabda30 doc: mention BIP86 in doc/bips.md
Github-Pull: #26443
Rebased-From: 303fb8ff45
2022-11-04 15:50:15 +00:00
MacroFake
ca5f8f0de2 Merge bitcoin/bitcoin#26436: [24.x] CI backports
7f2dc610a5 ci: Use same `merge_script` implementation for Windows as for all (Hennadii Stepanov)
14784aa02c ci: Move `git config` commands into script where they are used (Hennadii Stepanov)
b1268254ba ci: Use remote pull/merge ref instead of local git merge (MacroFake)

Pull request description:

  This PR backports:
  - https://github.com/bitcoin/bitcoin/pull/26202
  - https://github.com/bitcoin/bitcoin/pull/26236

  to avoid CI failures like that:
  - https://cirrus-ci.com/task/5653459278495744
  - https://cirrus-ci.com/task/6075671743561728

ACKs for top commit:
  fanquake:
    ACK 7f2dc610a5 - backports look correct.

Tree-SHA512: 46b45df8137efd42491dd3ac110c00e6e1bf4ab18a6bbbf68307fe976f391055b1987a22c101060ef5ae8ff1a2b738e197ad579754d1068d78f5eddcd45c7f69
2022-11-01 18:22:53 +01:00
fanquake
067dc42b79 Merge bitcoin/bitcoin#26434: [24.x] [gui] Bugfix: Check for readlink buffer overflow and handle gracefully
e049fd76f0 Bugfix: Check for readlink buffer overflow and handle gracefully (Luke Dashjr)

Pull request description:

  Identical commit taken as-is from https://github.com/bitcoin/bitcoin/pull/25548 for backport

ACKs for top commit:
  hebasto:
    ACK e049fd76f0

Tree-SHA512: 37e63d570de898187c1bc8dd311c299c527adea51faa08aa6a3923bdb9390e3263902ace3d52a1cfc34ac2ba84e9358961574f886be1f64b5749a62e3c50ad57
2022-11-01 13:31:40 +00:00
Hennadii Stepanov
7f2dc610a5 ci: Use same merge_script implementation for Windows as for all
Github-Pull: bitcoin/bitcoin#26236
Rebased-From: 37cf472063
2022-11-01 12:52:05 +00:00
Hennadii Stepanov
14784aa02c ci: Move git config commands into script where they are used
Github-Pull: bitcoin/bitcoin#26236
Rebased-From: ac1d99240a
2022-11-01 12:52:04 +00:00
MacroFake
b1268254ba ci: Use remote pull/merge ref instead of local git merge
The merge strategy on the remote may be different than the local one.
This may cause local merges to be different or fail completely. Fix this
by using the result of the remote merge.

Github-Pull: bitcoin/bitcoin#26202
Rebased-From: fad7281d78
2022-11-01 12:52:04 +00:00
MacroFake
c540f07ec3 Merge bitcoin/bitcoin#26428: [24.x] Bump version to 24.0rc3
1727b3bc54 doc: Generate manual pages for 24.0rc3 (fanquake)
3905706b70 build: Bump version to 24.0rc3 (fanquake)

Pull request description:

  It's been a number of weeks since rc2.
  Bump version.
  Regen manpages.

ACKs for top commit:
  instagibbs:
    ACK 1727b3bc54

Tree-SHA512: 52ee45cfa4e2fc193e2747472d267a8c473ad8ed33abc6fbb0e2834bcf84adde050d51789f8bb150d62dfef70a59d52fe3b93e02d31675c054f6435323036df4
2022-10-31 16:38:36 +01:00
fanquake
1727b3bc54 doc: Generate manual pages for 24.0rc3 2022-10-31 15:14:53 +00:00
fanquake
3905706b70 build: Bump version to 24.0rc3 2022-10-31 15:09:49 +00:00
fanquake
2e8880abc0 Merge bitcoin/bitcoin#26410: [24.x] rc3 backports
d5701900fc rpc: make `address` field optional (w0xlt)
e4b8c9b2bf rpc: add non-regression test about deriveaddresses crash when index is 2147483647 (muxator)
bf2bf73bcb rpc: fix crash in deriveaddresses when derivation index is 2147483647 (muxator)
b04f5f9608 test: Test for out of bounds vout in sendall (Andrew Chow)
dedee6af57 wallet: Check utxo prevout index out of bounds in sendall (Andrew Chow)
931db785ee test: Test that sendall works with watchonly spending specific utxos (Andrew Chow)
bbe864a13a wallet: Correctly check ismine for sendall (Andrew Chow)
4b7d30d026 Adjust `.tx/config` for new Transifex CLI (Hennadii Stepanov)

Pull request description:

  Backports:
  * https://github.com/bitcoin/bitcoin/pull/26321
  * https://github.com/bitcoin/bitcoin/pull/26344
  * https://github.com/bitcoin/bitcoin/pull/26275
  * https://github.com/bitcoin/bitcoin/pull/26349

ACKs for top commit:
  instagibbs:
    ACK d5701900fc
  hebasto:
    ACK d5701900fc, I've cherry-picked commits manually and got zero diff with this PR branch.

Tree-SHA512: dad64f4074b4f06d666c0f2d804eda92df241bcce0a49c28486311a151f2e9d46b75e1bce02de570dcc85957c9ce936debb2a4faa045800c9757c6c495115d7c
2022-10-31 15:04:41 +00:00
fanquake
a8f014b342 Merge bitcoin/bitcoin#26379: qt: 24.0rc3 translations update
33a61018b2 qt: 24.0rc3 translations update (Hennadii Stepanov)

Pull request description:

  This PR pulls the recent translations from the [Transifex.com](https://www.transifex.com/bitcoin/bitcoin) using the [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) tool.

  According to our [Release Process docs](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#before-every-release-candidate), it is supposed to be merged (just) before `v24.0rc3` tagging.

  Will keep this PR updated regularly until merging.

Top commit has no ACKs.

Tree-SHA512: ab8c44961356333cb60e102f54852b9721fb0d4a9dbe719c049007f522218391e29898c698b7e142512f98d21ef4c6b500b00c6ce107600690421ab2ade1cc70
2022-10-31 14:59:00 +00:00
Hennadii Stepanov
33a61018b2 qt: 24.0rc3 translations update 2022-10-30 19:28:56 +00:00
w0xlt
d5701900fc rpc: make address field optional
Github-Pull: #26349
Rebased-From: eb679a7896
2022-10-28 18:01:36 +08:00
muxator
e4b8c9b2bf rpc: add non-regression test about deriveaddresses crash when index is 2147483647
This test would cause a crash in bitcoind (see #26274) if the fix given in the
previous commit was not applied.

Github-Pull: #26275
Rebased-From: 9153ff3e27
2022-10-28 18:01:03 +08:00
muxator
bf2bf73bcb rpc: fix crash in deriveaddresses when derivation index is 2147483647
2147483647 is the maximum positive value of a signed int32, and - currently -
the maximum value that the deriveaddresses bitcoin RPC call accepts as
derivation index due to its input validation routines.

Before this change, when the derivation index (and thus range_end) reached
std::numeric_limits<int_32_t>::max(), the "i" variable in the for cycle (which
is declared as int, and as such 32 bits in size on most platforms) would be
incremented at the end of the first iteration and then warp back to
-2147483648. This caused SIGABRT in bitcoind and a core dump.

This change assigns "i" an explicit size of 64 bits on every platform,
sidestepping the problem.

Fixes #26274.

Github-Pull: #26275
Rebased-From: addf9d6502
2022-10-28 18:00:37 +08:00
Andrew Chow
b04f5f9608 test: Test for out of bounds vout in sendall
Github-Pull: #26344
Rebased-From: 315fd4dbab
2022-10-28 17:59:57 +08:00
Andrew Chow
dedee6af57 wallet: Check utxo prevout index out of bounds in sendall
Github-Pull: #26344
Rebased-From: b132c85650
2022-10-28 17:59:30 +08:00
Andrew Chow
931db785ee test: Test that sendall works with watchonly spending specific utxos
Github-Pull: #26344
Rebased-From: 708b72b715
2022-10-28 17:58:59 +08:00
Andrew Chow
bbe864a13a wallet: Correctly check ismine for sendall
sendall should be using a bitwise AND for sendall's IsMine check rather
than an equality as IsMine will never return ISMINE_ALL.

Github-Pull: #26344
Rebased-From: 6bcd7e2a3b
2022-10-28 17:58:28 +08:00
Hennadii Stepanov
4b7d30d026 Adjust .tx/config for new Transifex CLI
The old Transifex Command-Line Tool is considered deprecated (as of
January 2022) and will sunset on Nov 30, 2022.

See: https://github.com/transifex/cli/blob/devel/README.md#migrating-from-older-versions-of-the-client

An accompanying PR: https://github.com/bitcoin-core/bitcoin-maintainer-tools/pull/142

Github-Pull: #26321
Rebased-From: d6adbb7ee1
2022-10-28 17:49:27 +08:00
glozow
d22cc74837 Merge bitcoin/bitcoin#26382: [24.x] p2p: Handle IsContinuationOfLowWorkHeadersSync return value correctly when new headers sync is started
e23def8fcc [net processing] Handle IsContinuationOfLowWorkHeadersSync return value correctly when new headers sync is started (dergoegge)

Pull request description:

  Backport of #26355.

ACKs for top commit:
  dergoegge:
    ACK e23def8fcc
  stickies-v:
    ACK e23def8fcc

Tree-SHA512: 051ecb08f1f96557b5b6d01cc9d29a5dfabbb48afffd52cba662251c23277938fcbb6f207fc7575774ef627a9484ceb056cc75476861b920723c35c2f5da36c8
2022-10-27 13:38:08 +01:00
dergoegge
e23def8fcc [net processing] Handle IsContinuationOfLowWorkHeadersSync return value correctly when new headers sync is started 2022-10-24 15:41:35 +01:00
fanquake
bb5bcf32ba Merge bitcoin/bitcoin#26327: [24.x] Revert "build: Use Homebrew's sqlite package if it is available"
d216d714aa Revert "build: Use Homebrew's sqlite package if it is available" (fanquake)

Pull request description:

  Identical commit, taken as-is from https://github.com/bitcoin/bitcoin/pull/25985

ACKs for top commit:
  dergoegge:
    ACK d216d714aa
  hebasto:
    ACK d216d714aa

Tree-SHA512: 8fe4cd20602e506f9cf4caa4d7b6c59142eccdd103cd6748f6e3e23464836d620b2d6142cb247a991fa8df5aa19678635d00ece5cf24d825ae6ca184c3bf7c48
2022-10-18 20:00:04 +08:00
fanquake
d216d714aa Revert "build: Use Homebrew's sqlite package if it is available"
This reverts ee7b84e63c from #20527.
This change was made without any rationale, maybe other than a brew
installed version might be newer, and that's "better". However when
building from source on macOS, it just results in drastically worse
perofrmance, and results in issues / confusions like #25724.

Resolves the "build from source" portion of #25724. Building from
depends is still not ideal, however I have some other changes that might
help improve things in that case.

The difference in performance can be observed using the example from
https://github.com/bitcoin/bitcoin/issues/25724#issuecomment-1213554922,
but minified to only 10 descriptors. i.e:
```bash
time src/bitcoin-cli createwallet speedy true
time src/bitcoin-cli importdescriptors '[
  {"desc":"raw(00145846369f3d6ba366d6f5a903fb5cf4dca3763c0e)#k9wh6v62","timestamp":"now"},
  {"desc":"raw(001420800aabf13f3a4c4ce3ce4c66cecf1d17f21a6e)#6m0hlfh4","timestamp":"now"},
  {"desc":"raw(0014c6bf9715e06d73ebf9b3b02d5cc48d24d8bbabc1)#wyavh36r","timestamp":"now"},
  {"desc":"raw(00141ba7807b3f46af113beaea5c698428ce7138cd8a)#jctdsups","timestamp":"now"},
  {"desc":"raw(00140c1bd27f10fff01b36ddf3c1febaa1acff19b080)#9s6nc3pk","timestamp":"now"},
  {"desc":"raw(00141226e31987e4bc2e63c0ee12908f675e40464b20)#9pp7qm39","timestamp":"now"},
  {"desc":"raw(0014f73f149f7503960a5e849c6ee7a8a8c336f631cb)#qtkxv9fc","timestamp":"now"},
  {"desc":"raw(0014c8ccb4d81ffc769fc5fdd8d7eed69b0e0cae5749)#hn39qayv","timestamp":"now"},
  {"desc":"raw(001498565aead2d67a22a6021d55210f2a917fc22169)#6ar3vwsx","timestamp":"now"},
  {"desc":"raw(001403013248ac0cd9eabe176cad162cda2a19f771e1)#4m47mukd","timestamp":"now"}
]'
```

Running master, when building from souce and using brew installed
sqlite, this takes ~3.4s. With this PR, the same operation takes ~0.3s.
2022-09-02 14:51:27 +01:00
Luke Dashjr
e049fd76f0 Bugfix: Check for readlink buffer overflow and handle gracefully
If readlink returns the size of the buffer, an overflow may have (safely) occurred.
Pass a buffer size of MAX_PATH+1 (the size of the actual buffer) to detect this scenario.
2022-07-05 23:44:18 +00:00
48 changed files with 2814 additions and 366 deletions

View File

@@ -24,14 +24,11 @@ filter_template: &FILTER_TEMPLATE
base_template: &BASE_TEMPLATE
<< : *FILTER_TEMPLATE
merge_base_script:
# Unconditionally install git (used in fingerprint_script) and set the
# default git author name (used in verify-commits.py)
# Unconditionally install git (used in fingerprint_script).
- bash -c "$PACKAGE_MANAGER_INSTALL git"
- git config --global user.email "ci@ci.ci"
- git config --global user.name "ci"
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
- git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts
- git fetch $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
main_template: &MAIN_TEMPLATE
timeout_in: 120m # https://cirrus-ci.org/faq/#instance-timed-out
@@ -117,14 +114,7 @@ task:
QT_CONFIGURE_COMMAND: '..\configure -release -silent -opensource -confirm-license -opengl desktop -static -static-runtime -mp -qt-zlib -qt-pcre -qt-libpng -nomake examples -nomake tests -nomake tools -no-angle -no-dbus -no-gif -no-gtk -no-ico -no-icu -no-libjpeg -no-libudev -no-sql-sqlite -no-sql-odbc -no-sqlite -no-vulkan -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip doc -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtlottie -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquick3d -skip qtquickcontrols -skip qtquickcontrols2 -skip qtquicktimeline -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtx11extras -skip qtxmlpatterns -no-openssl -no-feature-bearermanagement -no-feature-printdialog -no-feature-printer -no-feature-printpreviewdialog -no-feature-printpreviewwidget -no-feature-sql -no-feature-sqlmodel -no-feature-textbrowser -no-feature-textmarkdownwriter -no-feature-textodfwriter -no-feature-xml'
IgnoreWarnIntDirInTempDetected: 'true'
merge_script:
- git config --global user.email "ci@ci.ci"
- git config --global user.name "ci"
# Windows filesystem loses the executable bit, and all of the executable
# files are considered "modified" now. It will break the following `git merge`
# command. The next two commands make git ignore this issue.
- git config core.filemode false
- git reset --hard
- PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL $env:CIRRUS_BASE_BRANCH; git merge FETCH_HEAD; }
- PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git checkout FETCH_HEAD; }
msvc_qt_built_cache:
folder: "%QTBASEDIR%"
reupload_on_changes: false

View File

@@ -1,7 +1,7 @@
[main]
host = https://www.transifex.com
[bitcoin.qt-translation-024x]
[o:bitcoin:p:bitcoin:r:qt-translation-024x]
file_filter = src/qt/locale/bitcoin_<lang>.xlf
source_file = src/qt/locale/bitcoin_en.xlf
source_lang = en

View File

@@ -31,6 +31,8 @@ if [ "$CIRRUS_REPO_FULL_NAME" = "bitcoin/bitcoin" ] && [ "$CIRRUS_PR" = "" ] ; t
git log HEAD~10 -1 --format='%H' > ./contrib/verify-commits/trusted-sha512-root-commit
git log HEAD~10 -1 --format='%H' > ./contrib/verify-commits/trusted-git-root
mapfile -t KEYS < contrib/verify-commits/trusted-keys
git config user.email "ci@ci.ci"
git config user.name "ci"
${CI_RETRY_EXE} gpg --keyserver hkps://keys.openpgp.org --recv-keys "${KEYS[@]}" &&
./contrib/verify-commits/verify-commits.py;
fi

View File

@@ -2,7 +2,7 @@ AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR, 24)
define(_CLIENT_VERSION_MINOR, 0)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_RC, 2)
define(_CLIENT_VERSION_RC, 0)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2022)
define(_COPYRIGHT_HOLDERS,[The %s developers])
@@ -763,10 +763,6 @@ case $host in
BDB_LIBS="-L$bdb_prefix/lib -ldb_cxx-4.8"
fi
if test "$use_sqlite" != "no" && $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 qt@5 >/dev/null; then
export PKG_CONFIG_PATH="$($BREW --prefix qt@5 2>/dev/null)/lib/pkgconfig:$PKG_CONFIG_PATH"
fi

View File

@@ -28,6 +28,7 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v24.0**):
and it is disabled by default at build time since **v0.19.0** ([PR #15584](https://github.com/bitcoin/bitcoin/pull/15584)).
It has been removed as of **v0.20.0** ([PR 17165](https://github.com/bitcoin/bitcoin/pull/17165)).
* [`BIP 84`](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki): The experimental descriptor wallets introduced in **v0.21.0** by default use the Hierarchical Deterministic Wallet derivation proposed by BIP 84. ([PR #16528](https://github.com/bitcoin/bitcoin/pull/16528))
* [`BIP 86`](https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki): Descriptor wallets by default use the Hierarchical Deterministic Wallet derivation proposed by BIP 86 since **v23.0** ([PR #22364](https://github.com/bitcoin/bitcoin/pull/22364)).
* [`BIP 90`](https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki): Trigger mechanism for activation of BIPs 34, 65, and 66 has been simplified to block height checks since **v0.14.0** ([PR #8391](https://github.com/bitcoin/bitcoin/pull/8391)).
* [`BIP 111`](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, and enforced for all peer versions as of **v0.13.0** ([PR #6579](https://github.com/bitcoin/bitcoin/pull/6579) and [PR #6641](https://github.com/bitcoin/bitcoin/pull/6641)).
* [`BIP 112`](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki): The CHECKSEQUENCEVERIFY opcode has been implemented since **v0.12.1** ([PR #7524](https://github.com/bitcoin/bitcoin/pull/7524)), and has been *buried* since **v0.19.0** ([PR #16060](https://github.com/bitcoin/bitcoin/pull/16060)).

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
.TH BITCOIN-CLI "1" "October 2022" "bitcoin-cli v24.0.0rc2" "User Commands"
.TH BITCOIN-CLI "1" "November 2022" "bitcoin-cli v24.0.0" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli v24.0.0rc2
bitcoin-cli \- manual page for bitcoin-cli v24.0.0
.SH SYNOPSIS
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v24.0.0rc2
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
.SH DESCRIPTION
Bitcoin Core RPC client version v24.0.0rc2
Bitcoin Core RPC client version v24.0.0
.SH OPTIONS
.HP
\-?

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
.TH BITCOIN-QT "1" "October 2022" "bitcoin-qt v24.0.0rc2" "User Commands"
.TH BITCOIN-QT "1" "November 2022" "bitcoin-qt v24.0.0" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt v24.0.0rc2
bitcoin-qt \- manual page for bitcoin-qt v24.0.0
.SH SYNOPSIS
.B bitcoin-qt
[\fI\,command-line options\/\fR]
.SH DESCRIPTION
Bitcoin Core version v24.0.0rc2
Bitcoin Core version v24.0.0
.SH OPTIONS
.HP
\-?

View File

@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
.TH BITCOIN-TX "1" "October 2022" "bitcoin-tx v24.0.0rc2" "User Commands"
.TH BITCOIN-TX "1" "November 2022" "bitcoin-tx v24.0.0" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx v24.0.0rc2
bitcoin-tx \- manual page for bitcoin-tx v24.0.0
.SH SYNOPSIS
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR
@@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v24.0.0rc2
.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 v24.0.0rc2
Bitcoin Core bitcoin\-tx utility version v24.0.0
.SH OPTIONS
.HP
\-?

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
.TH BITCOIN-UTIL "1" "October 2022" "bitcoin-util v24.0.0rc2" "User Commands"
.TH BITCOIN-UTIL "1" "November 2022" "bitcoin-util v24.0.0" "User Commands"
.SH NAME
bitcoin-util \- manual page for bitcoin-util v24.0.0rc2
bitcoin-util \- manual page for bitcoin-util v24.0.0
.SH SYNOPSIS
.B bitcoin-util
[\fI\,options\/\fR] [\fI\,commands\/\fR] \fI\,Do stuff\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-util utility version v24.0.0rc2
Bitcoin Core bitcoin\-util utility version v24.0.0
.SH OPTIONS
.HP
\-?

View File

@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
.TH BITCOIN-WALLET "1" "October 2022" "bitcoin-wallet v24.0.0rc2" "User Commands"
.TH BITCOIN-WALLET "1" "November 2022" "bitcoin-wallet v24.0.0" "User Commands"
.SH NAME
bitcoin-wallet \- manual page for bitcoin-wallet v24.0.0rc2
bitcoin-wallet \- manual page for bitcoin-wallet v24.0.0
.SH DESCRIPTION
Bitcoin Core bitcoin\-wallet version v24.0.0rc2
Bitcoin Core bitcoin\-wallet version v24.0.0
.PP
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.

View File

@@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
.TH BITCOIND "1" "October 2022" "bitcoind v24.0.0rc2" "User Commands"
.TH BITCOIND "1" "November 2022" "bitcoind v24.0.0" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind v24.0.0rc2
bitcoind \- manual page for bitcoind v24.0.0
.SH SYNOPSIS
.B bitcoind
[\fI\,options\/\fR] \fI\,Start Bitcoin Core\/\fR
.SH DESCRIPTION
Bitcoin Core version v24.0.0rc2
Bitcoin Core version v24.0.0
.SH OPTIONS
.HP
\-?

View File

@@ -1,99 +0,0 @@
*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.*
*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
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.15+, 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.
Notable changes
===============
P2P and network changes
-----------------------
Updated RPCs
------------
Changes to wallet related RPCs can be found in the Wallet section below.
New RPCs
--------
Build System
------------
Updated settings
----------------
Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.
New settings
------------
Tools and Utilities
-------------------
Wallet
------
GUI changes
-----------
Low-level changes
=================
RPC
---
Tests
-----
*version* change log
====================
Credits
=======
Thanks to everyone who directly contributed to this release:
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

388
doc/release-notes.md Normal file
View File

@@ -0,0 +1,388 @@
24.0 Release Notes
==================
Bitcoin Core version 24.0 is now available from:
<https://bitcoincore.org/bin/bitcoin-core-24.0/>
This release includes new features, various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
<https://github.com/bitcoin/bitcoin/issues>
To receive security and update notifications, please subscribe to:
<https://bitcoincore.org/en/list/announcements/join/>
How to Upgrade
==============
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
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.15+, 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.
Notice of new option for transaction replacement policies
=========================================================
This version of Bitcoin Core adds a new `mempoolfullrbf` configuration
option which allows users to change the policy their individual node
will use for relaying and mining unconfirmed transactions. The option
defaults to the same policy that was used in previous releases and no
changes to node policy will occur if everyone uses the default.
Some Bitcoin services today expect that the first version of an
unconfirmed transaction that they see will be the version of the
transaction that ultimately gets confirmed---a transaction acceptance
policy sometimes called "first-seen".
The Bitcoin Protocol does not, and cannot, provide any assurance that
the first version of an unconfirmed transaction seen by a particular
node will be the version that gets confirmed. If there are multiple
versions of the same unconfirmed transaction available, only the miner
who includes one of those transactions in a block gets to decide which
version of the transaction gets confirmed.
Despite this lack of assurance, multiple merchants and services today
still make this assumption.
There are several benefits to users from removing this *first-seen*
simplification. One key benefit, the ability for the sender of a
transaction to replace it with an alternative version paying higher
fees, was realized in [Bitcoin Core 0.12.0][] (February 2016) with the
introduction of [BIP125][] opt-in Replace By Fee (RBF).
Since then, there has been discussion about completely removing the
first-seen simplification and allowing users to replace any of their
older unconfirmed transactions with newer transactions, a feature called
*full-RBF*. This release includes a `mempoolfullrbf` configuration
option that allows enabling full-RBF, although it defaults to off
(allowing only opt-in RBF).
Several alternative node implementations have already enabled full-RBF by
default for years, and several contributors to Bitcoin Core are
advocating for enabling full-RBF by default in a future version of
Bitcoin Core.
As more nodes that participate in relay and mining begin enabling
full-RBF, replacement of unconfirmed transactions by ones offering higher
fees may rapidly become more reliable.
Contributors to this project strongly recommend that merchants and services
not accept unconfirmed transactions as final, and if they insist on doing so,
to take the appropriate steps to ensure they have some recourse or plan for
when their assumptions do not hold.
[Bitcoin Core 0.12.0]: https://bitcoincore.org/en/releases/0.12.0/#opt-in-replace-by-fee-transactions
[bip125]: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki
Notable changes
===============
P2P and network changes
-----------------------
- To address a potential denial-of-service, the logic to download headers from peers
has been reworked. This is particularly relevant for nodes starting up for the
first time (or for nodes which are starting up after being offline for a long time).
Whenever headers are received from a peer that have a total chainwork that is either
less than the node's `-minimumchainwork` value or is sufficiently below the work at
the node's tip, a "presync" phase will begin, in which the node will download the
peer's headers and verify the cumulative work on the peer's chain, prior to storing
those headers permanently. Once that cumulative work is verified to be sufficiently high,
the headers will be redownloaded from that peer and fully validated and stored.
This may result in initial headers sync taking longer for new nodes starting up for
the first time, both because the headers will be downloaded twice, and because the effect
of a peer disconnecting during the presync phase (or while the node's best headers chain has less
than `-minimumchainwork`), will result in the node needing to use the headers presync mechanism
with the next peer as well (downloading the headers twice, again). (#25717)
- With I2P connections, a new, transient address is used for each outbound
connection if `-i2pacceptincoming=0`. (#25355)
Updated RPCs
------------
- The `-deprecatedrpc=softforks` configuration option has been removed. The
RPC `getblockchaininfo` no longer returns the `softforks` field, which was
previously deprecated in 23.0. (#23508) Information on soft fork status is
now only available via the `getdeploymentinfo` RPC.
- The `deprecatedrpc=exclude_coinbase` configuration option has been removed.
The `receivedby` RPCs (`listreceivedbyaddress`, `listreceivedbylabel`,
`getreceivedbyaddress` and `getreceivedbylabel`) now always return results
accounting for received coins from coinbase outputs, without an option to
change that behaviour. Excluding coinbases was previously deprecated in 23.0.
(#25171)
- The `deprecatedrpc=fees` configuration option has been removed. The top-level
fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees` are no
longer returned by RPCs `getmempoolentry`, `getrawmempool(verbose=true)`,
`getmempoolancestors(verbose=true)` and `getmempooldescendants(verbose=true)`.
The same fee fields can be accessed through the `fees` object in the result.
The top-level fee fields were previously deprecated in 23.0. (#25204)
- The `getpeerinfo` RPC has been updated with a new `presynced_headers` field,
indicating the progress on the presync phase mentioned in the
"P2P and network changes" section above.
Changes to wallet related RPCs can be found in the Wallet section below.
New RPCs
--------
- The `sendall` RPC spends specific UTXOs to one or more recipients
without creating change. By default, the `sendall` RPC will spend
every UTXO in the wallet. `sendall` is useful to empty wallets or to
create a changeless payment from select UTXOs. When creating a payment
from a specific amount for which the recipient incurs the transaction
fee, continue to use the `subtractfeefromamount` option via the
`send`, `sendtoaddress`, or `sendmany` RPCs. (#24118)
- A new `gettxspendingprevout` RPC has been added, which scans the mempool to find
transactions spending any of the given outpoints. (#24408)
- The `simulaterawtransaction` RPC iterates over the inputs and outputs of the given
transactions, and tallies up the balance change for the given wallet. This can be
useful e.g. when verifying that a coin join like transaction doesn't contain unexpected
inputs that the wallet will then sign for unintentionally. (#22751)
Updated REST APIs
-----------------
- The `/headers/` and `/blockfilterheaders/` endpoints have been updated to use
a query parameter instead of path parameter to specify the result count. The
count parameter is now optional, and defaults to 5 for both endpoints. The old
endpoints are still functional, and have no documented behaviour change.
For `/headers`, use
`GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
instead of
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)
For `/blockfilterheaders/`, use
`GET /rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
instead of
`GET /rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)
(#24098)
Build System
------------
- Guix builds are now reproducible across architectures (x86_64 & aarch64). (#21194)
New settings
------------
- A new `mempoolfullrbf` option has been added, which enables the mempool to
accept transaction replacement without enforcing BIP125 replaceability
signaling. (#25353)
Wallet
------
- The `-walletrbf` startup option will now default to `true`. The
wallet will now default to opt-in RBF on transactions that it creates. (#25610)
- The `replaceable` option for the `createrawtransaction` and
`createpsbt` RPCs will now default to `true`. Transactions created
with these RPCs will default to having opt-in RBF enabled. (#25610)
- The `wsh()` output descriptor was extended with Miniscript support. You can import Miniscript
descriptors for P2WSH in a watchonly wallet to track coins, but you can't spend from them using
the Bitcoin Core wallet yet.
You can find more about Miniscript on the [reference website](https://bitcoin.sipa.be/miniscript/). (#24148)
- The `tr()` output descriptor now supports multisig scripts through the `multi_a()` and
`sortedmulti_a()` functions. (#24043)
- To help prevent fingerprinting transactions created by the Bitcoin Core wallet, change output
amounts are now randomized. (#24494)
- The `listtransactions`, `gettransaction`, and `listsinceblock`
RPC methods now include a wtxid field (hash of serialized transaction,
including witness data) for each transaction. (#24198)
- The `listsinceblock`, `listtransactions` and `gettransaction` output now contain a new
`parent_descs` field for every "receive" entry. (#25504)
- A new optional `include_change` parameter was added to the `listsinceblock` command.
- RPC `getreceivedbylabel` now returns an error, "Label not found
in wallet" (-4), if the label is not in the address book. (#25122)
Migrating Legacy Wallets to Descriptor Wallets
---------------------------------------------
An experimental RPC `migratewallet` has been added to migrate Legacy (non-descriptor) wallets to
Descriptor wallets. More information about the migration process is available in the
[documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets).
GUI changes
-----------
- A new menu item to restore a wallet from a backup file has been added (gui#471).
- Configuration changes made in the bitcoin GUI (such as the pruning setting,
proxy settings, UPNP preferences) are now saved to `<datadir>/settings.json`
file rather than to the Qt settings backend (windows registry or unix desktop
config files), so these settings will now apply to bitcoind, instead of being
ignored. (#15936, gui#602)
- Also, the interaction between GUI settings and `bitcoin.conf` settings is
simplified. Settings from `bitcoin.conf` are now displayed normally in the GUI
settings dialog, instead of in a separate warning message ("Options set in this
dialog are overridden by the configuration file: -setting=value"). And these
settings can now be edited because `settings.json` values take precedence over
`bitcoin.conf` values. (#15936)
Low-level changes
=================
RPC
---
- The `deriveaddresses`, `getdescriptorinfo`, `importdescriptors` and `scantxoutset` commands now
accept Miniscript expression within a `wsh()` descriptor. (#24148)
- The `getaddressinfo`, `decodescript`, `listdescriptors` and `listunspent` commands may now output
a Miniscript descriptor inside a `wsh()` where a `wsh(raw())` descriptor was previously returned. (#24148)
Credits
=======
Thanks to everyone who directly contributed to this release:
- /dev/fd0
- 0xb10c
- Adam Jonas
- akankshakashyap
- Ali Sherief
- amadeuszpawlik
- Andreas Kouloumos
- Andrew Chow
- Anthony Towns
- Antoine Poinsot
- Antoine Riard
- Aurèle Oulès
- avirgovi
- Ayush Sharma
- Baas
- Ben Woosley
- BrokenProgrammer
- brunoerg
- brydinh
- Bushstar
- Calvin Kim
- CAnon
- Carl Dong
- chinggg
- Cory Fields
- Daniel Kraft
- Daniela Brozzoni
- darosior
- Dave Scotese
- David Bakin
- dergoegge
- dhruv
- Dimitri
- dontbyte
- Duncan Dean
- eugene
- Eunoia
- Fabian Jahr
- furszy
- Gleb Naumenko
- glozow
- Greg Weber
- Gregory Sanders
- gruve-p
- Hennadii Stepanov
- hiago
- Igor Bubelov
- ishaanam
- Jacob P.
- Jadi
- James O'Beirne
- Janna
- Jarol Rodriguez
- Jeremy Rand
- Jeremy Rubin
- jessebarton
- João Barbosa
- John Newbery
- Jon Atack
- Josiah Baker
- Karl-Johan Alm
- KevinMusgrave
- Kiminuo
- klementtan
- Kolby Moroz
- kouloumos
- Kristaps Kaupe
- Larry Ruane
- Luke Dashjr
- MarcoFalke
- Marnix
- Martin Leitner-Ankerl
- Martin Zumsande
- Michael Dietz
- Michael Folkson
- Michael Ford
- Murch
- mutatrum
- muxator
- Oskar Mendel
- Pablo Greco
- pasta
- Patrick Strateman
- Pavol Rusnak
- Peter Bushnell
- phyBrackets
- Pieter Wuille
- practicalswift
- randymcmillan
- Robert Spigler
- Russell Yanofsky
- S3RK
- Samer Afach
- Sebastian Falbesoner
- Seibart Nedor
- Shashwat
- Sjors Provoost
- Smlep
- sogoagain
- Stacie
- Stéphan Vuylsteke
- Suhail Saqan
- Suhas Daftuar
- t-bast
- TakeshiMusgrave
- Vasil Dimov
- W. J. van der Laan
- w0xlt
- whiteh0rse
- willcl-ark
- William Casarin
- Yancy Ribbens
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@@ -43,6 +43,7 @@ QT_TS = \
qt/locale/bitcoin_kl.ts \
qt/locale/bitcoin_km.ts \
qt/locale/bitcoin_ko.ts \
qt/locale/bitcoin_ku.ts \
qt/locale/bitcoin_ku_IQ.ts \
qt/locale/bitcoin_ky.ts \
qt/locale/bitcoin_la.ts \
@@ -58,6 +59,7 @@ QT_TS = \
qt/locale/bitcoin_ne.ts \
qt/locale/bitcoin_nl.ts \
qt/locale/bitcoin_no.ts \
qt/locale/bitcoin_pa.ts \
qt/locale/bitcoin_pam.ts \
qt/locale/bitcoin_pl.ts \
qt/locale/bitcoin_pt.ts \

View File

@@ -2559,14 +2559,22 @@ bool PeerManagerImpl::TryLowWorkHeadersSync(Peer& peer, CNode& pfrom, const CBlo
// Now a HeadersSyncState object for tracking this synchronization is created,
// process the headers using it as normal.
return IsContinuationOfLowWorkHeadersSync(peer, pfrom, headers);
if (!IsContinuationOfLowWorkHeadersSync(peer, pfrom, headers)) {
// Something went wrong, reset the headers sync.
peer.m_headers_sync.reset(nullptr);
LOCK(m_headers_presync_mutex);
m_headers_presync_stats.erase(peer.m_id);
}
} else {
LogPrint(BCLog::NET, "Ignoring low-work chain (height=%u) from peer=%d\n", chain_start_header->nHeight + headers.size(), pfrom.GetId());
// Since this is a low-work headers chain, no further processing is required.
headers = {};
return true;
}
// The peer has not yet given us a chain that meets our work threshold,
// so we want to prevent further processing of the headers in any case.
headers = {};
return true;
}
return false;
}

View File

@@ -44,6 +44,7 @@
<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">locale/bitcoin_ku.qm</file>
<file alias="ku_IQ">locale/bitcoin_ku_IQ.qm</file>
<file alias="ky">locale/bitcoin_ky.qm</file>
<file alias="la">locale/bitcoin_la.qm</file>
@@ -59,6 +60,7 @@
<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="pa">locale/bitcoin_pa.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>

View File

@@ -615,9 +615,10 @@ bool SetStartOnSystemStartup(bool fAutoStart)
else
{
char pszExePath[MAX_PATH+1];
ssize_t r = readlink("/proc/self/exe", pszExePath, sizeof(pszExePath) - 1);
if (r == -1)
ssize_t r = readlink("/proc/self/exe", pszExePath, sizeof(pszExePath));
if (r == -1 || r > MAX_PATH) {
return false;
}
pszExePath[r] = '\0';
fs::create_directories(GetAutostartDir());

View File

@@ -240,6 +240,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">ملف الاعدادات %1 قد يكون تالف او غير صالح</translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished">استثناء هارب</translation>
@@ -353,12 +357,12 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform />
<numerusform />
<numerusform />
<numerusform />
<numerusform>%nثانية</numerusform>
<numerusform>%nثانية </numerusform>
<numerusform>%nثانية</numerusform>
<numerusform>%n ثواني</numerusform>
<numerusform>%nثواني </numerusform>
<numerusform>%n ثواني</numerusform>
</translation>
</message>
<message numerus="yes">

View File

@@ -54,6 +54,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">1%1 ি ি </translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished"> ি</translation>
@@ -78,6 +82,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment>
<translation type="unfinished">ি ি ি ি , ি ি ? </translation>
</message>
<message>
<source>A fatal error occurred. Check that settings file is writable, or try running with -nosettings.</source>
<extracomment>Explanatory text shown on startup when the settings file could not be written. Prompts user to check that we have the ability to write to the file. Explains that the user has the option of running without a settings file.</extracomment>
<translation type="unfinished">ি ি ি ি ি ি , -nosettings ি </translation>
</message>
<message>
<source>%1 didn't yet exit safely</source>
<translation type="unfinished">%1 ি ি</translation>

View File

@@ -260,6 +260,11 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
</context>
<context>
<name>QObject</name>
<message>
<source>Do you want to reset settings to default values, or to abort without making changes?</source>
<extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment>
<translation type="unfinished">Voleu restablir la configuració als valors predeterminats o sortir sense desar els canvis?</translation>
</message>
<message>
<source>A fatal error occurred. Check that settings file is writable, or try running with -nosettings.</source>
<extracomment>Explanatory text shown on startup when the settings file could not be written. Prompts user to check that we have the ability to write to the file. Explains that the user has the option of running without a settings file.</extracomment>
@@ -384,6 +389,14 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">El fitxer de configuració no es pot llegir</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">El fitxer de configuració no pot ser escrit</translation>
</message>
<message>
<source>The %s developers</source>
<translation type="unfinished">Els desenvolupadors %s</translation>
@@ -1012,6 +1025,10 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<source>Create a new wallet</source>
<translation type="unfinished">Crear una nova cartera</translation>
</message>
<message>
<source>&amp;Minimize</source>
<translation type="unfinished">&amp;Minimitza</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Moneder:</translation>
@@ -1196,6 +1213,10 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<source>Load Partially Signed Bitcoin Transaction</source>
<translation type="unfinished">Carrega la transacció Bitcoin signada parcialment</translation>
</message>
<message>
<source>Load PSBT from &amp;clipboard…</source>
<translation type="unfinished">Carrega la PSBT des del porta-retalls.</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
<translation type="unfinished">Carrega la transacció de Bitcoin signada parcialment des del porta-retalls</translation>
@@ -1282,6 +1303,10 @@ Només és possible firmar amb adreces del tipus "legacy".</translation>
<source>%1 client</source>
<translation type="unfinished">Client de %1</translation>
</message>
<message>
<source>&amp;Hide</source>
<translation type="unfinished">&amp;Amaga</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>

View File

@@ -368,36 +368,36 @@ Das Signieren ist nur mit Adressen vom Typ 'Legacy' möglich.</translation>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n Sekunde(n)</numerusform>
<numerusform>%n Sekunde(n)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n Minute(n)</numerusform>
<numerusform>%n Minute(n)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%nStunde(n)</numerusform>
<numerusform>%nStunde(n)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%nTag(e)</numerusform>
<numerusform>%nTag(e)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n Woche(n)</numerusform>
<numerusform>%n Woche(n)</numerusform>
</translation>
</message>
<message>
@@ -407,8 +407,8 @@ Das Signieren ist nur mit Adressen vom Typ 'Legacy' möglich.</translation>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%nJahr(e)</numerusform>
<numerusform>%nJahr(e)</numerusform>
</translation>
</message>
</context>
@@ -663,6 +663,10 @@ Bitte nutzen Sie entweder "bdb" oder "sqlite".</translation>
<source>Error loading %s: External signer wallet being loaded without external signer support compiled</source>
<translation type="unfinished">Fehler beim Laden von %s: Externe Unterzeichner-Brieftasche wird geladen, ohne dass die Unterstützung für externe Unterzeichner kompiliert wurde</translation>
</message>
<message>
<source>Error: Address book data in wallet cannot be identified to belong to migrated wallets</source>
<translation type="unfinished">Fehler: Adressbuchdaten im Wallet können nicht als zum migrierten Wallet zugehörig identifiziert werden</translation>
</message>
<message>
<source>Failed to rename invalid peers.dat file. Please move or delete it and try again.</source>
<translation type="unfinished">Kann ungültige Datei peers.dat nicht umbenennen. Bitte Verschieben oder Löschen und noch einmal versuchen.</translation>
@@ -2010,15 +2014,15 @@ Verifikations-Error: %s</translation>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(von %n GB benötigt)</numerusform>
<numerusform>(von %n GB benötigt)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(%n GB benötigt für komplette Blockchain)</numerusform>
<numerusform>(%n GB benötigt für komplette Blockchain)</numerusform>
</translation>
</message>
<message>
@@ -2033,8 +2037,8 @@ Verifikations-Error: %s</translation>
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(ausreichend um %n Tag(e) alte Backups wiederherzustellen)</numerusform>
<numerusform>(ausreichend um %n Tag(e) alte Backups wiederherzustellen)</numerusform>
</translation>
</message>
<message>
@@ -3818,8 +3822,8 @@ Hinweis: Da die Gebühr auf Basis der Bytes berechnet wird, führt eine Gebühre
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>Voraussichtlicher Beginn der Bestätigung innerhalb von %n Blöcken.</numerusform>
<numerusform>Voraussichtlicher Beginn der Bestätigung innerhalb von %n Blöcken.</numerusform>
</translation>
</message>
<message>

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 type="unfinished">Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección de recibo antes de transferir monedas.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Lista de tus direcciones de Bitcoin para recibir pagos. Para la creacion de una nueva direccion seleccione en la pestana "recibir" la opcion "Crear nueva direccion"
Registrarse solo es posible utilizando una direccion tipo "Legal"</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">Copiar dirección</translation>

View File

@@ -258,6 +258,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">فایل تنظیمات %1 ممکن است خراب یا نامعتبر باشد.</translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished">استثناء فراری (این استثناء نشان دهنده این است که هسته بیتکوین نتوانست چیزی را در کیف(والت) بنویسد.)</translation>
@@ -1013,7 +1017,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform>سابقه تراکنش بلوک(های) %n پردازش شد.</numerusform>
</translation>
</message>
<message>
@@ -1086,6 +1090,16 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Close wallet</source>
<translation type="unfinished">کیف پول را ببندید</translation>
</message>
<message>
<source>Restore Wallet…</source>
<extracomment>Name of the menu item that restores wallet from a backup file.</extracomment>
<translation type="unfinished">بازیابی کیف پول…</translation>
</message>
<message>
<source>Restore a wallet from a backup file</source>
<extracomment>Status tip for Restore Wallet menu item</extracomment>
<translation type="unfinished">بازیابی یک کیف پول از یک فایل پشتیبان</translation>
</message>
<message>
<source>Close all wallets</source>
<translation type="unfinished">همه‌ی کیف پول‌ها را ببند</translation>
@@ -1104,6 +1118,16 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>Name of the wallet data file format.</extracomment>
<translation type="unfinished">داده های کیف پول</translation>
</message>
<message>
<source>Load Wallet Backup</source>
<extracomment>The title for Restore Wallet File Windows</extracomment>
<translation type="unfinished">بارگیری پشتیبان‌گیری کیف پول</translation>
</message>
<message>
<source>Restore Wallet</source>
<extracomment>Title of pop-up window shown when the user is attempting to restore a wallet.</extracomment>
<translation type="unfinished">بازیابی کیف پول</translation>
</message>
<message>
<source>Wallet Name</source>
<extracomment>Label of the input field where the name of the wallet is entered.</extracomment>
@@ -1133,7 +1157,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform>%n اتصال(های) فعال به شبکه بیت کوین.</numerusform>
</translation>
</message>
<message>
@@ -1156,6 +1180,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>A context menu item. The network activity was disabled previously.</extracomment>
<translation type="unfinished">فعال‌سازی فعالیت شبکه</translation>
</message>
<message>
<source>Pre-syncing Headers (%1%)…</source>
<translation type="unfinished">پیش‌همگام‌سازی سرصفحه‌ها (%1%)…</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">خطا: %1</translation>
@@ -1414,7 +1442,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Can't list signers</source>
<translation type="unfinished">نمیتوان امضاکنندگان را فهرست کرد</translation>
</message>
</context>
<message>
<source>Too many external signers found</source>
<translation type="unfinished">تعداد زیادی امضاکننده خارجی پیدا شد</translation>
</message>
</context>
<context>
<name>LoadWalletsActivity</name>
<message>
@@ -1455,6 +1487,34 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">در حال باز کردن کیف پول &lt;b&gt;%1&lt;/b&gt;</translation>
</message>
</context>
<context>
<name>RestoreWalletActivity</name>
<message>
<source>Restore Wallet</source>
<extracomment>Title of progress window which is displayed when wallets are being restored.</extracomment>
<translation type="unfinished">بازیابی کیف پول</translation>
</message>
<message>
<source>Restoring Wallet &lt;b&gt;%1&lt;/b&gt;</source>
<extracomment>Descriptive text of the restore wallets progress window which indicates to the user that wallets are currently being restored.</extracomment>
<translation type="unfinished">بازیابی کیف پول &lt;b&gt;%1&lt;/b&gt; ...</translation>
</message>
<message>
<source>Restore wallet failed</source>
<extracomment>Title of message box which is displayed when the wallet could not be restored.</extracomment>
<translation type="unfinished">بازیابی کیف پول انجام نشد</translation>
</message>
<message>
<source>Restore wallet warning</source>
<extracomment>Title of message box which is displayed when the wallet is restored with some warning.</extracomment>
<translation type="unfinished">هشدار بازیابی کیف پول</translation>
</message>
<message>
<source>Restore wallet message</source>
<extracomment>Title of message box which is displayed when the wallet is successfully restored.</extracomment>
<translation type="unfinished">بازیابی پیام کیف پول</translation>
</message>
</context>
<context>
<name>WalletController</name>
<message>
@@ -1611,19 +1671,19 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform>%n گیگابایت فضای موجود</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform>(از %n گیگابایت مورد نیاز)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform>(%n گیگابایت برای زنجیره کامل مورد نیاز است)</numerusform>
</translation>
</message>
<message>
@@ -1638,7 +1698,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform>(برای بازیابی نسخههای پشتیبان %n روز (های) قدیمی کافی است)</numerusform>
</translation>
</message>
<message>
@@ -1673,6 +1733,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source> GB</source>
<translation type="unfinished">گیگابایت</translation>
</message>
<message>
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2 GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation type="unfinished">وقتی تأیید را کلیک میکنید، %1 شروع به دانلود و پردازش زنجیره بلاک %4 کامل (%2 گیگابایت) میکند که با اولین تراکنشها در %3 شروع میشود که %4 در ابتدا راهاندازی می شود.</translation>
</message>
<message>
<source>If you have chosen to limit block chain storage (pruning), the historical data must still be downloaded and processed, but will be deleted afterward to keep your disk usage low.</source>
<translation type="unfinished">اگر تصمیم بگیرید که فضای ذخیره سازی زنجیره بلوک (هرس) را محدود کنید ، داده های تاریخی باید بارگیری و پردازش شود ، اما اگر آن را حذف کنید ، اگر شما دیسک کم استفاده کنید.
@@ -1765,7 +1829,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Unknown. Syncing Headers (%1, %2%)…</source>
<translation type="unfinished">ناشناخته. هماهنگ‌سازی سربرگ‌ها (%1، %2%) </translation>
</message>
</context>
<message>
<source>Unknown. Pre-syncing Headers (%1, %2%)…</source>
<translation type="unfinished">ناشناس. پیش‌همگام‌سازی سرصفحه‌ها (%1، %2% )…</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
@@ -1800,6 +1868,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Size of &amp;database cache</source>
<translation type="unfinished">اندازه کش پایگاه داده.</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line:</source>
<translation type="unfinished">گزینه های تنظیم شده در این گفتگو توسط خط فرمان لغو می شوند:</translation>
</message>
<message>
<source>Open Configuration File</source>
<translation type="unfinished">بازکردن فایل پیکربندی</translation>
@@ -2038,6 +2110,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>Text explaining that the settings changed will not come into effect until the client is restarted.</extracomment>
<translation type="unfinished">کلاینت نیازمند ریست شدن است برای فعال کردن تغییرات</translation>
</message>
<message>
<source>Current settings will be backed up at "%1".</source>
<extracomment>Text explaining to the user that the client's current settings will be backed up at a specific location. %1 is a stand-in argument for the backup location's path.</extracomment>
<translation type="unfinished">تنظیمات فعلی در "%1" پشتیبان گیری خواهد شد.</translation>
</message>
<message>
<source>Client will be shut down. Do you want to proceed?</source>
<extracomment>Text asking the user to confirm if they would like to proceed with a client shutdown.</extracomment>
@@ -2080,6 +2157,13 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">آدرس پراکسی ارائه شده نامعتبر است.</translation>
</message>
</context>
<context>
<name>OptionsModel</name>
<message>
<source>Could not read setting "%1", %2.</source>
<translation type="unfinished">نمی توان تنظیم "%1"، %2 را خواند.</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>

View File

@@ -306,6 +306,10 @@ La signature n'est possible qu'avec les adresses de type "patrimoine".</translat
<source>Enter a Bitcoin address (e.g. %1)</source>
<translation type="unfinished">Saisir une adresse Bitcoin (p. ex. %1)</translation>
</message>
<message>
<source>Ctrl+W</source>
<translation type="unfinished">Ctrl-W</translation>
</message>
<message>
<source>Unroutable</source>
<translation type="unfinished">Non routable</translation>
@@ -368,36 +372,36 @@ La signature n'est possible qu'avec les adresses de type "patrimoine".</translat
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n second</numerusform>
<numerusform>%n secondes</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n minute</numerusform>
<numerusform>%n minutes</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n heure</numerusform>
<numerusform>%n heures</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n jour</numerusform>
<numerusform>%n jours</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n semaine</numerusform>
<numerusform>%n semaines</numerusform>
</translation>
</message>
<message>
@@ -407,8 +411,8 @@ La signature n'est possible qu'avec les adresses de type "patrimoine".</translat
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n année</numerusform>
<numerusform>%n années</numerusform>
</translation>
</message>
<message>
@@ -1994,8 +1998,8 @@ Impossible de restaurer la sauvegarde du portefeuille.</translation>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n Go despace disponible</numerusform>
<numerusform>%n Go despace disponible</numerusform>
</translation>
</message>
<message numerus="yes">
@@ -4084,8 +4088,8 @@ Note : Les frais étant calculés par octet, un taux de frais de « 100 satoshi
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>matures dans %n bloc supplémentaire</numerusform>
<numerusform>matures dans %n blocs supplémentaires</numerusform>
</translation>
</message>
<message>

357
src/qt/locale/bitcoin_ku.ts Normal file
View File

@@ -0,0 +1,357 @@
<TS version="2.1" language="ku">
<context>
<name>AddressBookPage</name>
<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;Kopi bike</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation type="unfinished">Bigire</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished">Navnîşana hilbijartî ji lîsteyê rake</translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation type="unfinished">Ji bo lêgerînê navnîşan an etîketê têkeve</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">Daneya di hilpekîna niha de bi rêya dosyayekê derxîne</translation>
</message>
<message>
<source>&amp;Export</source>
<translation type="unfinished">Derxîne</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished"> bibe</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished">Navnîşana ku ew ê koîn were şandin, hilbijêre</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation type="unfinished">Navnîşana ku ew ê koînan bistîne, hilbijêre</translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation type="unfinished">H&amp;ilbijêre</translation>
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished">Navnîşanên şandinê</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation type="unfinished">Navnîşanên stendinê</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp;Navnîşanê kopî bike</translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation type="unfinished">Etîketê &amp;kopî bike</translation>
</message>
<message>
<source>&amp;Edit</source>
<translation type="unfinished">&amp;Serrast bike</translation>
</message>
<message>
<source>Export Address List</source>
<translation type="unfinished">Lîsteya navnîşanan derxîne</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished">Etîket</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">Navnîşan</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Enter passphrase</source>
<translation type="unfinished">Pêborîna xwe têkevê</translation>
</message>
<message>
<source>New passphrase</source>
<translation type="unfinished">Pêborîna </translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation type="unfinished">Pêborîna xwe ya dubare bike</translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished">Pêborînê nîşan bide</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished">Şîfrekirina cizdên</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished">Kilîda cizdên veke</translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished">Pêborînê biguherîne</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation type="unfinished">Şîfrekirina cizdên bipejirîne</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation type="unfinished">Tu bi rastî dixwazî cizdanê xwe şîfre bikî?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation type="unfinished">Cizdan hate şîfrekirin</translation>
</message>
</context>
<context>
<name>QObject</name>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Wallet:</source>
<translation type="unfinished">Cizdan:</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Information</source>
<translation type="unfinished">Agahî</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished">Navnîşan</translation>
</message>
<message>
<source>Type</source>
<extracomment>Title of Peers Table column which describes the type of peer connection. The "type" describes why the connection exists.</extracomment>
<translation type="unfinished">Cure</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Wallet:</source>
<translation type="unfinished">Cizdan:</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">Etîket</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message>
<source>Type</source>
<translation type="unfinished">Cure</translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">Etîket</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message>
<source>Type</source>
<translation type="unfinished">Cure</translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">Etîket</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">Navnîşan</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation type="unfinished">Derxîne</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">Daneya di hilpekîna niha de bi rêya dosyayekê derxîne</translation>
</message>
</context>
</TS>

View File

@@ -85,6 +85,11 @@
<source>Export Address List</source>
<translation type="unfinished"> ि </translation>
</message>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">ि </translation>
@@ -105,8 +110,23 @@
<translation type="unfinished">( )</translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation type="unfinished"> . %1 ि ि .</translation>
</message>
<message>
<source>Internal error</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>%1 didn't yet exit safely</source>
<translation type="unfinished">%1 ि ...</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
@@ -150,8 +170,80 @@
</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">ि </translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">ि िि </translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Minimize</source>
<translation type="unfinished">&amp;ि</translation>
</message>
<message>
<source>&amp;Options</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>&amp;Encrypt Wallet</source>
<translation type="unfinished">&amp;ि </translation>
</message>
<message>
<source>&amp;Backup Wallet</source>
<translation type="unfinished">&amp;
 </translation>
</message>
<message>
<source>&amp;Change Passphrase</source>
<translation type="unfinished">&amp; ...</translation>
</message>
<message>
<source>Sign &amp;message</source>
<translation type="unfinished"> ि ...</translation>
</message>
<message>
<source>&amp;Verify message</source>
<translation type="unfinished">&amp; ि ...</translation>
</message>
<message>
<source>&amp;Load PSBT from file</source>
<translation type="unfinished"> PSBT &amp; ...</translation>
</message>
<message>
<source>Close Wallet</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Create Wallet</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Close All Wallets</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Syncing Headers (%1%)</source>
<translation type="unfinished"> ि (%1%)</translation>
</message>
<message>
<source>Synchronizing with network</source>
<translation type="unfinished"> ि ...</translation>
</message>
<message>
<source>Indexing blocks on disk</source>
<translation type="unfinished">ि ि ...</translation>
</message>
<message>
<source>Processing blocks on disk</source>
<translation type="unfinished">ि ि ...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
@@ -263,6 +355,11 @@
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>

View File

@@ -268,6 +268,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment>
<translation type="unfinished">Vil du tilbakestille innstillingene til utgangsverdiene, eller vil du avbryte uten å gjøre endringer?</translation>
</message>
<message>
<source>A fatal error occurred. Check that settings file is writable, or try running with -nosettings.</source>
<extracomment>Explanatory text shown on startup when the settings file could not be written. Prompts user to check that we have the ability to write to the file. Explains that the user has the option of running without a settings file.</extracomment>
<translation type="unfinished">En fatal feil har oppstått. Sjekk at filen med innstillinger er skrivbar eller prøv å kjøre med -nosettings.</translation>
</message>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Feil: Den spesifiserte datamappen "%1" finnes ikke.</translation>
@@ -350,36 +355,36 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n sekund</numerusform>
<numerusform>%n sekunder</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n minutt</numerusform>
<numerusform>%n minutter</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n time</numerusform>
<numerusform>%n timer</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n dag</numerusform>
<numerusform>%n dager</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n uke</numerusform>
<numerusform>%n uker</numerusform>
</translation>
</message>
<message>
@@ -389,8 +394,8 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n år</numerusform>
<numerusform>%n år</numerusform>
</translation>
</message>
</context>
@@ -552,6 +557,12 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation type="unfinished">Kan ikke sette -peerblockfilters uten -blockfilterindex</translation>
</message>
<message>
<source>
Unable to restore backup of wallet.</source>
<translation type="unfinished">
Kunne ikke gjenopprette sikkerhetskopi av lommebok.</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">Kopirett © %i-%i</translation>
@@ -748,6 +759,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation type="unfinished"> oppgi en port med -whitebind: '%s'</translation>
</message>
<message>
<source>No addresses available</source>
<translation type="unfinished">Ingen adresser tilgjengelig</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">For fildeskriptorer tilgjengelig.</translation>
@@ -1187,6 +1202,16 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Close wallet</source>
<translation type="unfinished">Lukk lommebok</translation>
</message>
<message>
<source>Restore Wallet</source>
<extracomment>Name of the menu item that restores wallet from a backup file.</extracomment>
<translation type="unfinished">Gjenopprett lommebok...</translation>
</message>
<message>
<source>Restore a wallet from a backup file</source>
<extracomment>Status tip for Restore Wallet menu item</extracomment>
<translation type="unfinished">Gjenopprett en lommebok fra en sikkerhetskopi</translation>
</message>
<message>
<source>Close all wallets</source>
<translation type="unfinished">Lukk alle lommebøker</translation>
@@ -1216,6 +1241,16 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>Name of the wallet data file format.</extracomment>
<translation type="unfinished">Lommebokdata</translation>
</message>
<message>
<source>Load Wallet Backup</source>
<extracomment>The title for Restore Wallet File Windows</extracomment>
<translation type="unfinished">Last lommebok sikkerhetskopi</translation>
</message>
<message>
<source>Restore Wallet</source>
<extracomment>Title of pop-up window shown when the user is attempting to restore a wallet.</extracomment>
<translation type="unfinished">Gjenopprett lommebok</translation>
</message>
<message>
<source>Wallet Name</source>
<extracomment>Label of the input field where the name of the wallet is entered.</extracomment>
@@ -1261,6 +1296,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<extracomment>A context menu item. The network activity was disabled previously.</extracomment>
<translation type="unfinished">Klikk for å aktivere nettverksaktivitet.</translation>
</message>
<message>
<source>Pre-syncing Headers (%1%)</source>
<translation type="unfinished">Synkroniserer blokkhoder (%1%)...</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Feil: %1</translation>
@@ -1549,6 +1588,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Åpner lommebok &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
</context>
<context>
<name>RestoreWalletActivity</name>
<message>
<source>Restore Wallet</source>
<extracomment>Title of progress window which is displayed when wallets are being restored.</extracomment>
<translation type="unfinished">Gjenopprett lommebok</translation>
</message>
</context>
<context>
<name>WalletController</name>
<message>
@@ -1730,15 +1777,15 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(av %n GB som trengs)</numerusform>
<numerusform>(av %n GB som trengs)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(%n GB kreves for hele kjeden)</numerusform>
<numerusform>(%n GB kreves for hele kjeden)</numerusform>
</translation>
</message>
<message>
@@ -1890,7 +1937,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<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 type="unfinished">%1 synkroniseres for øyeblikket. Den vil laste ned blokkhoder og blokker fra likemenn og validere dem til de når enden av blokkjeden.</translation>
</message>
</context>
<message>
<source>Unknown. Pre-syncing Headers (%1, %2%)</source>
<translation type="unfinished">Ukjent.Synkroniser blokkhoder (%1,%2%)...</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
@@ -1941,6 +1992,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu.</source>
<translation type="unfinished">Minimer i stedet for å avslutte applikasjonen når vinduet lukkes. Når dette er valgt, vil applikasjonen avsluttes kun etter at Avslutte er valgt i menyen.</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line:</source>
<translation type="unfinished">Alternativer som er satt i denne dialogboksen overstyres av kommandolinjen:</translation>
</message>
<message>
<source>Open the %1 configuration file from the working directory.</source>
<translation type="unfinished">Åpne %1-oppsettsfila fra arbeidsmappen.</translation>
@@ -2350,6 +2405,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Transaction still needs signature(s).</source>
<translation type="unfinished">Transaksjonen trenger signatur(er).</translation>
</message>
<message>
<source>(But no wallet is loaded.)</source>
<translation type="unfinished">(Men ingen lommebok er lastet.)</translation>
</message>
<message>
<source>(But this wallet cannot sign transactions.)</source>
<translation type="unfinished">(Men denne lommeboken kan ikke signere transaksjoner.)</translation>
@@ -2419,6 +2478,11 @@ Hvis du får denne feilen burde du be forretningsdrivende om å tilby en BIP21 k
<extracomment>Title of Peers Table column which contains a unique number used to identify a connection.</extracomment>
<translation type="unfinished">Likemann</translation>
</message>
<message>
<source>Age</source>
<extracomment>Title of Peers Table column which indicates the duration (length of time) since the peer connection started.</extracomment>
<translation type="unfinished">Alder</translation>
</message>
<message>
<source>Direction</source>
<extracomment>Title of Peers Table column which indicates the direction the peer connection was initiated from.</extracomment>
@@ -2601,6 +2665,11 @@ Hvis du får denne feilen burde du be forretningsdrivende om å tilby en BIP21 k
<source>Mapped AS</source>
<translation type="unfinished">Kartlagt AS</translation>
</message>
<message>
<source>Addresses Processed</source>
<extracomment>Text title for the Addresses Processed field in the peer details area, which displays the total number of addresses received from this peer that were processed (excludes addresses that were dropped due to rate-limiting).</extracomment>
<translation type="unfinished">Adresser Prosessert</translation>
</message>
<message>
<source>User Agent</source>
<translation type="unfinished">Brukeragent</translation>
@@ -3271,6 +3340,11 @@ Hvis du får denne feilen burde du be forretningsdrivende om å tilby en BIP21 k
<extracomment>Text to inform a user attempting to create a transaction of their current options. At this stage, a user can only create a PSBT. This string is displayed when private keys are disabled and an external signer is not available.</extracomment>
<translation type="unfinished">Se over ditt transaksjonsforslag. Dette kommer til å produsere en Delvis Signert Bitcoin Transaksjon (PSBT) som du kan lagre eller kopiere og så signere med f.eks. en offline %1 lommebok, eller en PSBT kompatibel hardware lommebok.</translation>
</message>
<message>
<source>Do you want to create this transaction?</source>
<extracomment>Message displayed when attempting to create a transaction. Cautionary text to prompt the user to verify that the displayed transaction details represent the transaction the user intends to create.</extracomment>
<translation type="unfinished">Vil du lage denne transaksjonen?</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<extracomment>Text to prompt a user to review the details of the transaction they are attempting to send.</extracomment>
@@ -3637,8 +3711,8 @@ Hvis du får denne feilen burde du be forretningsdrivende om å tilby en BIP21 k
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>modner om %n blokk</numerusform>
<numerusform>modner om %n blokker</numerusform>
</translation>
</message>
<message>

View File

@@ -654,10 +654,56 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<source>Error loading %s: External signer wallet being loaded without external signer support compiled</source>
<translation type="unfinished">Fout bij laden %s: Externe signer wallet wordt geladen zonder gecompileerde ondersteuning voor externe signers</translation>
</message>
<message>
<source>Error: Address book data in wallet cannot be identified to belong to migrated wallets</source>
<translation type="unfinished">Fout: adresboekgegevens in portemonnee kunnen niet worden geïdentificeerd als behorend tot gemigreerde portemonnees</translation>
</message>
<message>
<source>Error: Duplicate descriptors created during migration. Your wallet may be corrupted.</source>
<translation type="unfinished">Fout: dubbele beschrijvingen gemaakt tijdens migratie. Uw portemonnee is mogelijk corrupt.</translation>
</message>
<message>
<source>Error: Transaction %s in wallet cannot be identified to belong to migrated wallets</source>
<translation type="unfinished">Fout: transactie %s in portemonnee kan niet worden geïdentificeerd als behorend tot gemigreerde portemonnees</translation>
</message>
<message>
<source>Error: Unable to produce descriptors for this legacy wallet. Make sure the wallet is unlocked first</source>
<translation type="unfinished">Fout: kan descriptors voor deze verouderde portemonnee niet produceren. Zorg ervoor dat de portemonnee eerst is ontgrendeld</translation>
</message>
<message>
<source>Failed to rename invalid peers.dat file. Please move or delete it and try again.</source>
<translation type="unfinished">Kan de naam van het ongeldige peers.dat bestand niet hernoemen. Verplaats of verwijder het en probeer het opnieuw.</translation>
</message>
<message>
<source>Incompatible options: -dnsseed=1 was explicitly specified, but -onlynet forbids connections to IPv4/IPv6</source>
<translation type="unfinished">Incompatibele opties: -dnsseed=1 is expliciet gespecificeerd, maar -onlynet verbiedt verbindingen met IPv4/IPv6</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is explicitly forbidden: -onion=0</source>
<translation type="unfinished">Uitgaande verbindingen beperkt tot Tor (-onlynet=onion) maar de proxy voor het bereiken van het Tor-netwerk is expliciet verboden: -onion=0</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is not provided: none of -proxy, -onion or -listenonion is given</source>
<translation type="unfinished">Uitgaande verbindingen beperkt tot Tor (-onlynet=onion) maar de proxy voor het bereiken van het Tor netwerk is niet verstrekt (geen -proxy= en geen -onion= opgegeven) of het is expliciet verboden (-onion=0)</translation>
</message>
<message>
<source>Unrecognized descriptor found. Loading wallet %s
The wallet might had been created on a newer version.
Please try running the latest software version.
</source>
<translation type="unfinished">Niet-herkende descriptor gevonden. Portemonnee laden %s
De portemonnee is mogelijk gemaakt op een nieuwere versie.
Probeer de nieuwste softwareversie uit te voeren.
</translation>
</message>
<message>
<source>
Unable to cleanup failed migration</source>
<translation type="unfinished">
Kan mislukte migratie niet opschonen</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished">Configuratie-instellingen voor %s alleen toegepast op %s network wanneer in [%s] sectie.</translation>
@@ -738,6 +784,14 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<source>Error reading next record from wallet database</source>
<translation type="unfinished">Fout bij het lezen van het volgende record in de walletdatabase</translation>
</message>
<message>
<source>Error: Could not add watchonly tx to watchonly wallet</source>
<translation type="unfinished">Fout: kan watchonly tx niet toevoegen aan watchonly-portemonnee</translation>
</message>
<message>
<source>Error: Could not delete watchonly transactions</source>
<translation type="unfinished">Fout: kan alleen-kijken-transacties niet verwijderen</translation>
</message>
<message>
<source>Error: Couldn't create cursor into database</source>
<translation type="unfinished">Fout: Kan geen cursor in de database maken</translation>
@@ -750,6 +804,10 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<source>Error: Dumpfile checksum does not match. Computed %s, expected %s</source>
<translation type="unfinished">Fout: Checksum van dumpbestand komt niet overeen. Berekend %s, verwacht %s</translation>
</message>
<message>
<source>Error: Failed to create new watchonly wallet</source>
<translation type="unfinished">Fout: kan geen nieuwe watchonly-portemonnee maken</translation>
</message>
<message>
<source>Error: Got key that was not hex: %s</source>
<translation type="unfinished">Fout: Verkregen key was geen hex: %s</translation>
@@ -770,10 +828,38 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<source>Error: No %s addresses available.</source>
<translation type="unfinished">Fout: Geen %s adressen beschikbaar</translation>
</message>
<message>
<source>Error: Not all watchonly txs could be deleted</source>
<translation type="unfinished">Fout: niet alle watchonly tx's kunnen worden verwijderd</translation>
</message>
<message>
<source>Error: This wallet already uses SQLite</source>
<translation type="unfinished">Fout: deze portemonnee gebruikt SQLite al</translation>
</message>
<message>
<source>Error: This wallet is already a descriptor wallet</source>
<translation type="unfinished">Fout: deze portemonnee is al een descriptorportefeuille</translation>
</message>
<message>
<source>Error: Unable to begin reading all records in the database</source>
<translation type="unfinished">Fout: Kan niet beginnen met het lezen van alle records in de database</translation>
</message>
<message>
<source>Error: Unable to make a backup of your wallet</source>
<translation type="unfinished">Fout: kan geen back-up van uw portemonnee maken</translation>
</message>
<message>
<source>Error: Unable to parse version %u as a uint32_t</source>
<translation type="unfinished">Fout: Kan versie %u niet als een uint32_t verwerken</translation>
</message>
<message>
<source>Error: Unable to read all records in the database</source>
<translation type="unfinished">Fout: kan niet alle records in de database lezen</translation>
</message>
<message>
<source>Error: Unable to remove watchonly address book data</source>
<translation type="unfinished">Fout: kan adresboekgegevens voor alleen kijken niet verwijderen</translation>
</message>
<message>
<source>Error: Unable to write record to new wallet</source>
<translation type="unfinished">Fout: Kan record niet naar nieuwe wallet schrijven</translation>
@@ -1058,6 +1144,10 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished">Niet mogelijk ok HTTP-server te starten. Zie debuglogboek voor details.</translation>
</message>
<message>
<source>Unable to unload the wallet before migrating</source>
<translation type="unfinished">Kan de portemonnee niet verwijderen voordat deze wordt gemigreerd</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">Onbekende -blokfilterindexwaarde %s.</translation>
@@ -1078,6 +1168,10 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished">Onbekende nieuwe regels geactiveerd (versionbit %i)</translation>
</message>
<message>
<source>Unsupported global logging level -loglevel=%s. Valid values: %s.</source>
<translation type="unfinished">Niet-ondersteund globaal logniveau -loglevel= %s. Geldige waarden: %s .</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Niet-ondersteunde logcategorie %s=%s.</translation>
@@ -2039,6 +2133,10 @@ Ondertekenen is alleen mogelijk met adressen van het type 'legacy'.</translation
<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 type="unfinished">Deze initiële synchronisatie is heel veeleisend, en kan hardware problemen met uw computer blootleggen die voorheen onopgemerkt bleven. Elke keer dat %1 gebruikt word, zal verdergegaan worden waar gebleven is.</translation>
</message>
<message>
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2 GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation type="unfinished">Als u op OK klikt, dan zal %1 beginnen met downloaden en verwerken van de volledige %4 blokketen (%2 GB) startend met de eerste transacties in %3 toen %4 initeel werd gestart.</translation>
</message>
<message>
<source>If you have chosen to limit block chain storage (pruning), the historical data must still be downloaded and processed, but will be deleted afterward to keep your disk usage low.</source>
<translation type="unfinished">Als u gekozen heeft om de blokketenopslag te beperken (pruning), dan moet de historische data nog steeds gedownload en verwerkt worden, maar zal verwijderd worden naderhand om schijf gebruik zo laag mogelijk te houden.</translation>

448
src/qt/locale/bitcoin_pa.ts Normal file
View File

@@ -0,0 +1,448 @@
<TS version="2.1" language="pa">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished"> -ਿ </translation>
</message>
<message>
<source>Create a new address</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation type="unfinished"> ਿ - 'ਤੇ ਨਕਲ ਲਾਹੋ</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;ਨਕਲ ਲਾਹੋ</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation type="unfinished">ਬੰ&amp;ਦ ਕਰੋ</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished">ਚੁਣੇ ਪਤੇ ਨੂੰ ਸੂਚੀ ਵਿੱਚੋਂ ਮਿਟਾਓ</translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation type="unfinished">ਖੋਜਣ ਲਈ ਪਤਾ ਜਾਂ ਲੇਬਲ ਦਾਖਲ ਕਰੋ</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">ਮੌਜੂਦਾ ਟੈਬ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਫਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰੋ</translation>
</message>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;ਨਿਰਯਾਤ</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;ਮਿਟਾਓ</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished">ਸਿੱਕੇ ਭੇਜਣ ਲਈ ਪਤਾ ਚੁਣੋ</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation type="unfinished">ਸਿੱਕੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਪਤਾ ਚੁਣੋ</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 type="unfinished">ਇਹ ਭੁਗਤਾਨ ਭੇਜਣ ਲਈ ਤੁਹਾਡੇ ਬਿਟਕੋਇਨ ਪਤੇ ਹਨ। ਸਿੱਕੇ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਹਮੇਸ਼ਾਂ ਰਕਮ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਪਤੇ ਦੀ ਜਾਂਚ ਕਰੋ।</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp;ਕਾਪੀ ਪਤਾ</translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation type="unfinished">&amp;ਲੇਬਲ ਕਾਪੀ ਕਰੋ</translation>
</message>
<message>
<source>&amp;Edit</source>
<translation type="unfinished">&amp;ਸੋਧੋ</translation>
</message>
<message>
<source>Export Address List</source>
<translation type="unfinished">ਪਤਾ ਸੂਚੀ ਨਿਰਯਾਤ ਕਰੋ</translation>
</message>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished">ਕਾਮੇ ਨਾਲ ਵੱਖ ਕੀਤੀ ਫਾਈਲ</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">ਨਿਰਯਾਤ ਅਸਫਲ ਰਿਹਾ</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished">ਲੇਬਲ</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">ਪਤਾ</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation type="unfinished">ਪਾਸਫਰੇਜ ਡਾਇਲਾਗ</translation>
</message>
<message>
<source>Enter passphrase</source>
<translation type="unfinished">ਪਾਸਫਰੇਜ ਲਿਖੋ</translation>
</message>
<message>
<source>New passphrase</source>
<translation type="unfinished">ਨਵਾਂ ਪਾਸਫਰੇਜ</translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation type="unfinished">ਨਵਾਂ ਪਾਸਫਰੇਜ ਦੁਹਰਾਓ</translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished">ਪਾਸਫਰੇਜ ਦਿਖਾਓ</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished">ਵਾਲਿਟ ਐਨਕ੍ਰਿਪਟ ਕਰੋ</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished">ਵਾਲਿਟ ਨੂੰ ਅਨਲੌਕ ਕਰੋ</translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished">ਪਾਸਫਰੇਜ ਬਦਲੋ</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation type="unfinished">ਵਾਲਿਟ ਇਨਕ੍ਰਿਪਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation type="unfinished">ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ ' ਿ ਿ ?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation type="unfinished">ਿ ਿ ਿ</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation type="unfinished">ਿ ਿ</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation type="unfinished"> ਿ ਿ </translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation type="unfinished"> ਿ ਿ ਿ </translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation type="unfinished">ਿ ਿ </translation>
</message>
<message>
<source>The supplied passphrases do not match.</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Wallet unlock failed</source>
<translation type="unfinished">ਿ ਿ</translation>
</message>
<message>
<source>Wallet passphrase was successfully changed.</source>
<translation type="unfinished">ਿ ਿ ਿ</translation>
</message>
<message>
<source>Warning: The Caps Lock key is on!</source>
<translation type="unfinished">: Caps Lock !</translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation type="unfinished"> %1 ਿ ਿ </translation>
</message>
<message>
<source>Internal error</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Error: %1</source>
<translation type="unfinished">: %1</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">ਿ ਿ </translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">ਿ ਿ ਿ </translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
<translation type="unfinished">&amp;ਿ</translation>
</message>
<message>
<source>&amp;Transactions</source>
<translation type="unfinished">&amp;-</translation>
</message>
<message>
<source>Browse transaction history</source>
<translation type="unfinished">- ਿ </translation>
</message>
<message>
<source>Quit application</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Create a new wallet</source>
<translation type="unfinished"> ਿ </translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">: </translation>
</message>
<message>
<source>Send coins to a Bitcoin address</source>
<translation type="unfinished">ਿ 'ਤੇ ਸਿੱਕੇ ਭੇਜੋ</translation>
</message>
<message>
<source>Backup wallet to another location</source>
<translation type="unfinished">ਵਾਲਿਟ ਨੂੰ ਕਿਸੇ ਹੋਰ ਥਾਂ ' </translation>
</message>
<message>
<source>Change the passphrase used for wallet encryption</source>
<translation type="unfinished">ਿ ਿ ਿ </translation>
</message>
<message>
<source>&amp;Send</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>&amp;Receive</source>
<translation type="unfinished">&amp; </translation>
</message>
<message>
<source>&amp;Encrypt Wallet</source>
<translation type="unfinished">&amp;ਿ ਿ ...</translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
<translation type="unfinished">ਿ ਿ ਿ </translation>
</message>
<message>
<source>&amp;Backup Wallet</source>
<translation type="unfinished">&amp; ਿ</translation>
</message>
<message>
<source>&amp;Change Passphrase</source>
<translation type="unfinished"> &amp;...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">: %1</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Wallet:</source>
<translation type="unfinished">: </translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">ਿ ਿ</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>Create a new wallet</source>
<translation type="unfinished"> ਿ </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;ਿ</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished"> ਿ ਿ </translation>
</message>
</context>
</TS>

View File

@@ -245,6 +245,10 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">Plik ustawień 1%1 może być uszkodzony lub nieprawidłowy</translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished">Błąd zapisu do portfela</translation>
@@ -331,6 +335,16 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<extracomment>Peer connection type established manually through one of several methods.</extracomment>
<translation type="unfinished">Ręczny</translation>
</message>
<message>
<source>Feeler</source>
<extracomment>Short-lived peer connection type that tests the aliveness of known addresses.</extracomment>
<translation type="unfinished">Szczelinomierz</translation>
</message>
<message>
<source>Address Fetch</source>
<extracomment>Short-lived peer connection type that solicits known addresses from a peer.</extracomment>
<translation type="unfinished">Pobieranie adresu</translation>
</message>
<message>
<source>None</source>
<translation type="unfinished">Żaden</translation>
@@ -422,6 +436,10 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation type="unfinished">Nie można uzyskać blokady na katalogu z danymi %s. %s najprawdopodobniej jest już uruchomiony.</translation>
</message>
<message>
<source>Cannot upgrade a non HD split wallet from version %i to version %i without upgrading to support pre-split keypool. Please use version %i or no version specified.</source>
<translation type="unfinished">Nie można zaktualizować portfela dzielonego innego niż HD z wersji 1%i do wersji 1%i bez aktualizacji w celu obsługi wstępnie podzielonej puli kluczy. Użyj wersji 1%i lub nie określono wersji.</translation>
</message>
<message>
<source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
<translation type="unfinished">Rozprowadzane na licencji MIT, zobacz dołączony plik %s lub %s</translation>
@@ -430,14 +448,54 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation type="unfinished">Błąd odczytu %s! Wszystkie klucze zostały odczytane poprawnie, ale może brakować danych transakcji lub wpisów w książce adresowej, lub mogą one być nieprawidłowe.</translation>
</message>
<message>
<source>Error reading %s! Transaction data may be missing or incorrect. Rescanning wallet.</source>
<translation type="unfinished">Błąd odczytu 1%s! Może brakować danych transakcji lub mogą być one nieprawidłowe. Ponowne skanowanie portfela.</translation>
</message>
<message>
<source>Error: Dumpfile format record is incorrect. Got "%s", expected "format".</source>
<translation type="unfinished">Błąd: rekord formatu pliku zrzutu jest nieprawidłowy. Otrzymano „1%s”, oczekiwany „format”.</translation>
</message>
<message>
<source>Error: Dumpfile identifier record is incorrect. Got "%s", expected "%s".</source>
<translation type="unfinished">Błąd: rekord identyfikatora pliku zrzutu jest nieprawidłowy. Otrzymano „1%s”, oczekiwano „1%s”.</translation>
</message>
<message>
<source>Error: Dumpfile version is not supported. This version of bitcoin-wallet only supports version 1 dumpfiles. Got dumpfile with version %s</source>
<translation type="unfinished">Błąd: wersja pliku zrzutu nie jest obsługiwana. Ta wersja bitcoin-wallet obsługuje tylko pliki zrzutów w wersji 1. Mam plik zrzutu w wersji 1%s</translation>
</message>
<message>
<source>Error: Legacy wallets only support the "legacy", "p2sh-segwit", and "bech32" address types</source>
<translation type="unfinished">Błąd: starsze portfele obsługują tylko typy adresów „legacy”, „p2sh-segwit” i „bech32”</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation type="unfinished">Estymacja opłat nieudana. Domyślna opłata jest wyłączona. Poczekaj kilka bloków lub włącz -fallbackfee.</translation>
</message>
<message>
<source>File %s already exists. If you are sure this is what you want, move it out of the way first.</source>
<translation type="unfinished">Plik 1%s już istnieje. Jeśli jesteś pewien, że tego chcesz, najpierw usuń to z drogi.</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 type="unfinished">Niewłaściwa ilość dla -maxtxfee=&lt;ilość&gt;: '%s' (musi wynosić przynajmniej minimalną wielkość %s aby zapobiec utknięciu transakcji)</translation>
</message>
<message>
<source>Invalid or corrupt peers.dat (%s). If you believe this is a bug, please report it to %s. As a workaround, you can move the file (%s) out of the way (rename, move, or delete) to have a new one created on the next start.</source>
<translation type="unfinished">Nieprawidłowy lub uszkodzony plik peers.dat (1%s). Jeśli uważasz, że to błąd, zgłoś go do 1%s. Jako obejście, możesz przenieść plik (1%s) z drogi (zmień nazwę, przenieś lub usuń), aby przy następnym uruchomieniu utworzyć nowy.</translation>
</message>
<message>
<source>No dump file provided. To use createfromdump, -dumpfile=&lt;filename&gt; must be provided.</source>
<translation type="unfinished">Nie dostarczono pliku zrzutu. Aby użyć funkcji createfromdump, należy podać -dumpfile=1.</translation>
</message>
<message>
<source>No dump file provided. To use dump, -dumpfile=&lt;filename&gt; must be provided.</source>
<translation type="unfinished">Nie dostarczono pliku zrzutu. Aby użyć funkcji createfromdump, należy podać -dumpfile=1.</translation>
</message>
<message>
<source>No wallet file format provided. To use createfromdump, -format=&lt;format&gt; must be provided.</source>
<translation type="unfinished">Nie dostarczono pliku zrzutu. Aby użyć funkcji createfromdump, należy podać -dumpfile=1.</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 type="unfinished">Proszę sprawdzić czy data i czas na Twoim komputerze poprawne! Jeżeli ustawienia zegara będą złe, %s nie będzie działał prawidłowo.</translation>
@@ -462,6 +520,10 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation type="unfinished">Baza bloków zawiera blok, który wydaje się pochodzić z przyszłości. Może to wynikać z nieprawidłowego ustawienia daty i godziny Twojego komputera. Bazę danych bloków dobuduj tylko, jeśli masz pewność, że data i godzina twojego komputera poprawne</translation>
</message>
<message>
<source>The block index db contains a legacy 'txindex'. To clear the occupied disk space, run a full -reindex, otherwise ignore this error. This error message will not be displayed again.</source>
<translation type="unfinished">Baza danych indeksu bloku zawiera odziedziczony txindex. Aby wyczyścić zajęte miejsce na dysku, uruchom pełną indeksację, w przeciwnym razie zignoruj ten błąd. Ten komunikat o błędzie nie zostanie ponownie wyświetlony.</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation type="unfinished">Zbyt niska kwota transakcji do wysłania po odjęciu opłaty</translation>
@@ -1110,9 +1172,9 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform />
<numerusform>Przetworzono %n blok historii transakcji.</numerusform>
<numerusform>Przetworzono 1%n bloków historii transakcji.</numerusform>
<numerusform>Przetworzono 1%n bloków historii transakcji.</numerusform>
</translation>
</message>
<message>
@@ -1191,6 +1253,16 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Close wallet</source>
<translation type="unfinished">Zamknij portfel</translation>
</message>
<message>
<source>Restore Wallet</source>
<extracomment>Name of the menu item that restores wallet from a backup file.</extracomment>
<translation type="unfinished">Przywróć Portfel</translation>
</message>
<message>
<source>Restore a wallet from a backup file</source>
<extracomment>Status tip for Restore Wallet menu item</extracomment>
<translation type="unfinished">Przywróć portfel z pliku kopii zapasowej</translation>
</message>
<message>
<source>Close all wallets</source>
<translation type="unfinished">Zamknij wszystkie portfele</translation>
@@ -1220,6 +1292,16 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<extracomment>Name of the wallet data file format.</extracomment>
<translation type="unfinished">Informacje portfela</translation>
</message>
<message>
<source>Load Wallet Backup</source>
<extracomment>The title for Restore Wallet File Windows</extracomment>
<translation type="unfinished">Załaduj kopię zapasową portfela</translation>
</message>
<message>
<source>Restore Wallet</source>
<extracomment>Title of pop-up window shown when the user is attempting to restore a wallet.</extracomment>
<translation type="unfinished">Przywróć portfel</translation>
</message>
<message>
<source>Wallet Name</source>
<extracomment>Label of the input field where the name of the wallet is entered.</extracomment>
@@ -1576,6 +1658,14 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<translation type="unfinished">Otwieranie portfela &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
</context>
<context>
<name>RestoreWalletActivity</name>
<message>
<source>Restore Wallet</source>
<extracomment>Title of progress window which is displayed when wallets are being restored.</extracomment>
<translation type="unfinished">Przywróć portfel</translation>
</message>
</context>
<context>
<name>WalletController</name>
<message>
@@ -1929,6 +2019,10 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<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 type="unfinished">%1 jest w trakcie synchronizacji. Trwa pobieranie i weryfikacja nagłówków oraz bloków z sieci w celu uzyskania aktualnego stanu łańcucha.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)</source>
<translation type="unfinished">nieznany, Synchronizowanie nagłówków (1%1, 2%2%)</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
@@ -1960,6 +2054,10 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>&amp;Start %1 on system login</source>
<translation type="unfinished">Uruchamiaj %1 wraz z zalogowaniem do &amp;systemu</translation>
</message>
<message>
<source>Enabling pruning significantly reduces the disk space required to store transactions. All blocks are still fully validated. Reverting this setting requires re-downloading the entire blockchain.</source>
<translation type="unfinished">Włączenie czyszczenia znacznie zmniejsza ilość miejsca na dysku wymaganego do przechowywania transakcji. Wszystkie bloki nadal w pełni zweryfikowane. Przywrócenie tego ustawienia wymaga ponownego pobrania całego łańcucha bloków.</translation>
</message>
<message>
<source>Size of &amp;database cache</source>
<translation type="unfinished">Wielkość bufora bazy &amp;danych</translation>
@@ -2008,6 +2106,16 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Reverting this setting requires re-downloading the entire blockchain.</source>
<translation type="unfinished">Cofnięcie tego ustawienia wymaga ponownego załadowania całego łańcucha bloków.</translation>
</message>
<message>
<source>Maximum database cache size. A larger cache can contribute to faster sync, after which the benefit is less pronounced for most use cases. Lowering the cache size will reduce memory usage. Unused mempool memory is shared for this cache.</source>
<extracomment>Tooltip text for Options window setting that sets the size of the database cache. Explains the corresponding effects of increasing/decreasing this value.</extracomment>
<translation type="unfinished">Maksymalny rozmiar pamięci podręcznej bazy danych. Większa pamięć podręczna może przyczynić się do szybszej synchronizacji, po której korzyści mniej widoczne w większości przypadków użycia. Zmniejszenie rozmiaru pamięci podręcznej zmniejszy zużycie pamięci. Nieużywana pamięć mempool jest współdzielona dla tej pamięci podręcznej.</translation>
</message>
<message>
<source>Set the number of script verification threads. Negative values correspond to the number of cores you want to leave free to the system.</source>
<extracomment>Tooltip text for Options window setting that sets the number of script verification threads. Explains that negative values mean to leave these many cores free to the system.</extracomment>
<translation type="unfinished">Ustaw liczbę wątków weryfikacji skryptu. Wartości ujemne odpowiadają liczbie rdzeni, które chcesz pozostawić systemowi.</translation>
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation type="unfinished">(0 = automatycznie, &lt;0 = zostaw tyle wolnych rdzeni)</translation>
@@ -2026,6 +2134,11 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>W&amp;allet</source>
<translation type="unfinished">Portfel</translation>
</message>
<message>
<source>Whether to set subtract fee from amount as default or not.</source>
<extracomment>Tooltip text for Options window setting that sets subtracting the fee from a sending amount as default.</extracomment>
<translation type="unfinished">Czy ustawić opłatę odejmowaną od kwoty jako domyślną, czy nie.</translation>
</message>
<message>
<source>Subtract &amp;fee from amount by default</source>
<extracomment>An Options window setting to set subtracting the fee from a sending amount as default.</extracomment>
@@ -2061,6 +2174,14 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>External Signer (e.g. hardware wallet)</source>
<translation type="unfinished">Zewnętrzny sygnatariusz (np. portfel sprzętowy) </translation>
</message>
<message>
<source>&amp;External signer script path</source>
<translation type="unfinished">&amp;Ścieżka zewnętrznego skryptu podpisującego</translation>
</message>
<message>
<source>Full path to a Bitcoin Core compatible script (e.g. C:\Downloads\hwi.exe or /Users/you/Downloads/hwi.py). Beware: malware can steal your coins!</source>
<translation type="unfinished">Pełna ścieżka do skryptu zgodnego z Bitcoin Core (np. C:\Downloads\hwi.exe lub /Users/you/Downloads/hwi.py). Uwaga: złośliwe oprogramowanie może ukraść Twoje monety!</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 type="unfinished">Automatycznie otwiera port klienta Bitcoin na routerze. Ta opcja dzieła tylko jeśli twój router wspiera UPnP i jest ono włączone.</translation>
@@ -2149,6 +2270,14 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Choose the default subdivision unit to show in the interface and when sending coins.</source>
<translation type="unfinished">Wybierz podział jednostki pokazywany w interfejsie oraz podczas wysyłania monet</translation>
</message>
<message>
<source>Third-party URLs (e.g. a block explorer) that appear in the transactions tab as context menu items. %s in the URL is replaced by transaction hash. Multiple URLs are separated by vertical bar |.</source>
<translation type="unfinished">Adresy URL stron trzecich (np. eksplorator bloków), które pojawiają się na karcie transakcji jako pozycje menu kontekstowego. %s w adresie URL jest zastępowane hashem transakcji. Wiele adresów URL jest oddzielonych pionową kreską |.</translation>
</message>
<message>
<source>&amp;Third-party transaction URLs</source>
<translation type="unfinished">&amp;Adresy URL transakcji stron trzecich</translation>
</message>
<message>
<source>Whether to show coin control features or not.</source>
<translation type="unfinished">Wybierz pokazywanie lub nie funkcji kontroli monet.</translation>
@@ -2345,6 +2474,10 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Failed to sign transaction: %1</source>
<translation type="unfinished">Nie udało się podpisać transakcji: %1</translation>
</message>
<message>
<source>Cannot sign inputs while wallet is locked.</source>
<translation type="unfinished">Nie można podpisywać danych wejściowych, gdy portfel jest zablokowany.</translation>
</message>
<message>
<source>Could not sign any more inputs.</source>
<translation type="unfinished">Nie udało się podpisać więcej wejść.</translation>
@@ -2373,6 +2506,11 @@ Podpisywanie jest możliwe tylko z adresami typu 'legacy'.</translation>
<source>Save Transaction Data</source>
<translation type="unfinished">Zapisz dane transakcji</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary)</source>
<extracomment>Expanded name of the binary PSBT file format. See: BIP 174.</extracomment>
<translation type="unfinished">Częściowo podpisana transakcja (binarna)</translation>
</message>
<message>
<source>PSBT saved to disk.</source>
<translation type="unfinished">PSBT zapisane na dysk.</translation>
@@ -2663,6 +2801,11 @@ Jeśli pojawia się ten błąd, poproś sprzedawcę o podanie URI zgodnego z BIP
<source>Mapped AS</source>
<translation type="unfinished">Zmapowany autonomiczny system (ang. asmap)</translation>
</message>
<message>
<source>Whether we relay addresses to this peer.</source>
<extracomment>Tooltip text for the Address Relay field in the peer details area, which displays whether we relay addresses to this peer (Yes/No).</extracomment>
<translation type="unfinished">Czy przekazujemy adresy do tego peera.</translation>
</message>
<message>
<source>Address Relay</source>
<extracomment>Text title for the Address Relay field in the peer details area, which displays whether we relay addresses to this peer (Yes/No).</extracomment>
@@ -2718,6 +2861,18 @@ Jeśli pojawia się ten błąd, poproś sprzedawcę o podanie URI zgodnego z BIP
<source>Services</source>
<translation type="unfinished">Usługi</translation>
</message>
<message>
<source>Whether the peer requested us to relay transactions.</source>
<translation type="unfinished">Czy peer poprosił nas o przekazanie transakcji.</translation>
</message>
<message>
<source>Wants Tx Relay</source>
<translation type="unfinished">Chce przekaźnik Tx</translation>
</message>
<message>
<source>High bandwidth BIP152 compact block relay: %1</source>
<translation type="unfinished">Kompaktowy przekaźnik blokowy BIP152 o dużej przepustowości: 1 %1</translation>
</message>
<message>
<source>High Bandwidth</source>
<translation type="unfinished">Wysoka Przepustowość</translation>
@@ -2730,6 +2885,11 @@ Jeśli pojawia się ten błąd, poproś sprzedawcę o podanie URI zgodnego z BIP
<source>Last Block</source>
<translation type="unfinished">Ostatni Blok</translation>
</message>
<message>
<source>Elapsed time since a novel transaction accepted into our mempool was received from this peer.</source>
<extracomment>Tooltip text for the Last Transaction field in the peer details area.</extracomment>
<translation type="unfinished">Czas, który upłynął od otrzymania nowej transakcji przyjętej do naszej pamięci od tego partnera.</translation>
</message>
<message>
<source>Last Send</source>
<translation type="unfinished">Ostatnio wysłano</translation>
@@ -2799,6 +2959,39 @@ Jeśli pojawia się ten błąd, poproś sprzedawcę o podanie URI zgodnego z BIP
<extracomment>Explanatory text for an inbound peer connection.</extracomment>
<translation type="unfinished">Przychodzące: zainicjowane przez węzeł</translation>
</message>
<message>
<source>Outbound Full Relay: default</source>
<extracomment>Explanatory text for an outbound peer connection that relays all network information. This is the default behavior for outbound connections.</extracomment>
<translation type="unfinished">Pełny przekaźnik wychodzący: domyślnie</translation>
</message>
<message>
<source>Outbound Block Relay: does not relay transactions or addresses</source>
<extracomment>Explanatory text for an outbound peer connection that relays network information about blocks and not transactions or addresses.</extracomment>
<translation type="unfinished">Outbound Block Relay: nie przekazuje transakcji ani adresów</translation>
</message>
<message>
<source>Outbound Manual: added using RPC %1 or %2/%3 configuration options</source>
<extracomment>Explanatory text for an outbound peer connection that was established manually through one of several methods. The numbered arguments are stand-ins for the methods available to establish manual connections.</extracomment>
<translation type="unfinished">Outbound Manual: dodano przy użyciu opcji konfiguracyjnych RPC 1%1 lub 2%2/3%3</translation>
</message>
<message>
<source>Outbound Feeler: short-lived, for testing addresses</source>
<extracomment>Explanatory text for a short-lived outbound peer connection that is used to test the aliveness of known addresses.</extracomment>
<translation type="unfinished">Outbound Feeler: krótkotrwały, do testowania adresów</translation>
</message>
<message>
<source>Outbound Address Fetch: short-lived, for soliciting addresses</source>
<extracomment>Explanatory text for a short-lived outbound peer connection that is used to request addresses from a peer.</extracomment>
<translation type="unfinished">Pobieranie adresu wychodzącego: krótkotrwałe, do pozyskiwania adresów</translation>
</message>
<message>
<source>we selected the peer for high bandwidth relay</source>
<translation type="unfinished">wybraliśmy peera dla przekaźnika o dużej przepustowości</translation>
</message>
<message>
<source>the peer selected us for high bandwidth relay</source>
<translation type="unfinished">peer wybrał nas do przekaźnika o dużej przepustowości</translation>
</message>
<message>
<source>no high bandwidth relay selected</source>
<translation type="unfinished">nie wybrano przekaźnika o dużej przepustowości</translation>
@@ -3024,6 +3217,10 @@ Jeśli pojawia się ten błąd, poproś sprzedawcę o podanie URI zgodnego z BIP
<source>&amp;Verify</source>
<translation type="unfinished">Zweryfikuj</translation>
</message>
<message>
<source>Verify this address on e.g. a hardware wallet screen</source>
<translation type="unfinished">Zweryfikuj ten adres np. na ekranie portfela sprzętowego</translation>
</message>
<message>
<source>&amp;Save Image…</source>
<translation type="unfinished">Zapi&amp;sz Obraz...</translation>
@@ -3159,6 +3356,10 @@ Korzystanie z opłaty domyślnej może skutkować wysłaniem transakcji, która
<source>Clear all fields of the form.</source>
<translation type="unfinished">Wyczyść wszystkie pola formularza.</translation>
</message>
<message>
<source>Inputs…</source>
<translation type="unfinished">Wejścia…</translation>
</message>
<message>
<source>Dust:</source>
<translation type="unfinished">Pył:</translation>
@@ -3171,6 +3372,14 @@ Korzystanie z opłaty domyślnej może skutkować wysłaniem transakcji, która
<source>Hide transaction fee settings</source>
<translation type="unfinished">Ukryj ustawienia opłat transakcyjnych</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 rate of "100 satoshis per kvB" for a transaction size of 500 virtual bytes (half of 1 kvB) would ultimately yield a fee of only 50 satoshis.</source>
<translation type="unfinished">Określ niestandardową opłatę za kB (1000 bajtów) wirtualnego rozmiaru transakcji.
Uwaga: Ponieważ opłata jest naliczana za każdy bajt, opłata "100 satoshi za kB" w przypadku transakcji o wielkości 500 bajtów (połowa 1 kB) ostatecznie da opłatę w wysokości tylko 50 satoshi.</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 type="unfinished">Gdy ilość transakcji jest mniejsza niż ilość miejsca w bloku, górnicy i węzły przekazujące wymagają minimalnej opłaty. Zapłata tylko tej wartości jest dopuszczalna, lecz może skutkować transakcją która nigdy nie zostanie potwierdzona w sytuacji, gdy ilość transakcji przekroczy przepustowość sieci.</translation>
@@ -3179,6 +3388,10 @@ Korzystanie z opłaty domyślnej może skutkować wysłaniem transakcji, która
<source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
<translation type="unfinished">Zbyt niska opłata może spowodować, że transakcja nigdy nie zostanie zatwierdzona (przeczytaj podpowiedź)</translation>
</message>
<message>
<source>(Smart fee not initialized yet. This usually takes a few blocks)</source>
<translation type="unfinished">(Sprytne opłaty nie jeszcze zainicjowane. Trwa to zwykle kilka bloków...)</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation type="unfinished">Docelowy czas potwierdzenia:</translation>
@@ -3248,6 +3461,11 @@ Korzystanie z opłaty domyślnej może skutkować wysłaniem transakcji, która
<source>Connect your hardware wallet first.</source>
<translation type="unfinished">Najpierw podłącz swój sprzętowy portfel.</translation>
</message>
<message>
<source>Set external signer script path in Options -&gt; Wallet</source>
<extracomment>"External signer" means using devices such as hardware wallets.</extracomment>
<translation type="unfinished">Ustaw ścieżkę zewnętrznego skryptu podpisującego w Opcje -&gt; Portfel</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation type="unfinished">&amp;Utwórz niepodpisaną transakcję</translation>
@@ -3290,6 +3508,11 @@ Korzystanie z opłaty domyślnej może skutkować wysłaniem transakcji, która
<source>Save Transaction Data</source>
<translation type="unfinished">Zapisz dane transakcji</translation>
</message>
<message>
<source>Partially Signed Transaction (Binary)</source>
<extracomment>Expanded name of the binary PSBT file format. See: BIP 174.</extracomment>
<translation type="unfinished">Częściowo podpisana transakcja (binarna)</translation>
</message>
<message>
<source>PSBT saved</source>
<translation type="unfinished">Zapisano PSBT</translation>
@@ -3316,6 +3539,11 @@ Korzystanie z opłaty domyślnej może skutkować wysłaniem transakcji, która
<extracomment>Message displayed when attempting to create a transaction. Cautionary text to prompt the user to verify that the displayed transaction details represent the transaction the user intends to create.</extracomment>
<translation type="unfinished">Czy chcesz utworzyć tę transakcję?</translation>
</message>
<message>
<source>Please, review your transaction. You can create and send this transaction or create a Partially Signed Bitcoin Transaction (PSBT), which you can save or copy and then sign with, e.g., an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<extracomment>Text to inform a user attempting to create a transaction of their current options. At this stage, a user can send their transaction or create a PSBT. This string is displayed when both private keys and PSBT controls are enabled.</extracomment>
<translation type="unfinished">Proszę przejrzeć propozycję transakcji. Zostanie utworzona częściowo podpisana transakcja (ang. PSBT), którą można skopiować, a następnie podpisać np. offline z portfelem %1 lub z innym portfelem zgodnym z PSBT.</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<extracomment>Text to prompt a user to review the details of the transaction they are attempting to send.</extracomment>
@@ -4119,6 +4347,10 @@ Przejdź do Plik &gt; Otwórz Portfel aby wgrać portfel.
<source>New fee:</source>
<translation type="unfinished">Nowa opłata:</translation>
</message>
<message>
<source>Warning: This may pay the additional fee by reducing change outputs or adding inputs, when necessary. It may add a new change output if one does not already exist. These changes may potentially leak privacy.</source>
<translation type="unfinished">Ostrzeżenie: Może to spowodować uiszczenie dodatkowej opłaty poprzez zmniejszenie zmian wyjść lub dodanie danych wejściowych, jeśli jest to konieczne. Może dodać nowe wyjście zmiany, jeśli jeszcze nie istnieje. Te zmiany mogą potencjalnie spowodować utratę prywatności.</translation>
</message>
<message>
<source>Confirm fee bump</source>
<translation type="unfinished">Potwierdź zwiększenie opłaty</translation>

View File

@@ -3402,6 +3402,11 @@ Para mais informação acerca da utilização desta consola, escreva %6.
<source>Connect your hardware wallet first.</source>
<translation type="unfinished">Por favor conecte a sua wallet física primeiro.</translation>
</message>
<message>
<source>Set external signer script path in Options -&gt; Wallet</source>
<extracomment>"External signer" means using devices such as hardware wallets.</extracomment>
<translation type="unfinished">Defina o caminho do script do assinante externo em Opções -&gt; Carteira</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation type="unfinished">Criar não assinado</translation>

View File

@@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished">Clique com o botão direito para editar endereço ou etiqueta</translation>
<translation type="unfinished">Clique com o botão direito para editar o endereço ou a etiqueta</translation>
</message>
<message>
<source>Create a new address</source>
@@ -35,7 +35,7 @@
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">Exportar os dados do separador atual para um ficheiro</translation>
<translation type="unfinished">Exportar os dados do separador atual para um arquivo</translation>
</message>
<message>
<source>&amp;Export</source>
@@ -43,7 +43,7 @@
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;Excluir</translation>
<translation type="unfinished">E&amp;xcluir</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
@@ -298,6 +298,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Enter a Bitcoin address (e.g. %1)</source>
<translation type="unfinished">Informe um endereço Bitcoin (ex: %1)</translation>
</message>
<message>
<source>Ctrl+W</source>
<translation type="unfinished">Control+W</translation>
</message>
<message>
<source>Inbound</source>
<extracomment>An inbound connection from a peer. An inbound connection is a connection initiated by a peer.</extracomment>
@@ -315,36 +319,36 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n segundo</numerusform>
<numerusform>%n segundos</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n minuto</numerusform>
<numerusform>%n minutos</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n hora</numerusform>
<numerusform>%n horas</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n dia</numerusform>
<numerusform>%n dias</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n semana</numerusform>
<numerusform>%n semanas</numerusform>
</translation>
</message>
<message>
@@ -354,8 +358,8 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n ano</numerusform>
<numerusform>%nanos </numerusform>
</translation>
</message>
</context>
@@ -425,6 +429,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation type="unfinished">Configuração de prune abaixo do mínimo de %d MiB.Por gentileza use um número mais alto.</translation>
</message>
<message>
<source>Prune mode is incompatible with -reindex-chainstate. Use full -reindex instead.</source>
<translation type="unfinished">O modo Prune é incompatível com a opção "-reindex-chainstate". Ao invés disso utilize "-reindex".</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 type="unfinished">Prune: A ultima sincronização da carteira foi além dos dados podados. Você precisa usar -reindex (fazer o download de toda a blockchain novamente no caso de nós com prune)</translation>
@@ -473,6 +481,14 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
<translation type="unfinished">Não é possível reproduzir blocos. Você precisará reconstruir o banco de dados usando -reindex-chainstate.</translation>
</message>
<message>
<source>Unsupported chainstate database format found. Please restart with -reindex-chainstate. This will rebuild the chainstate database.</source>
<translation type="unfinished">Formato de banco de dados incompatível na chainstate. Por favor reinicie com a opção "-reindex-chainstate". Isto irá recriar o banco de dados da chainstate.</translation>
</message>
<message>
<source>Wallet created successfully. The legacy wallet type is being deprecated and support for creating and opening legacy wallets will be removed in the future.</source>
<translation type="unfinished">Carteira criada com sucesso. As carteiras antigas estão sendo descontinuadas e o suporte para a criação de abertura de carteiras antigas será removido no futuro.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation type="unfinished">Aviso: Chaves privadas detectadas na carteira {%s} com chaves privadas desativadas</translation>
@@ -525,6 +541,22 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>%s request to listen on port %u. This port is considered "bad" and thus it is unlikely that any Bitcoin Core peers connect to it. See doc/p2p-bad-ports.md for details and a full list.</source>
<translation type="unfinished">%s solicitou abertura da porta %u. Esta porta é considerada "ruim" e é improvável que outros usuários do Bitcoin Core conseguirão se conectar. Veja doc/p2p-bad-ports.md para detalhes e uma lista completa.</translation>
</message>
<message>
<source>-reindex-chainstate option is not compatible with -blockfilterindex. Please temporarily disable blockfilterindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.</source>
<translation type="unfinished">a opção "-reindex-chainstate" não é compatível com "-blockfilterindex". Por favor, desabilite temporariamente a opção "blockfilterindex" enquanto utilizar a opção "-reindex-chainstate", ou troque "-reindex-chainstate" por "-reindex" para recriar completamente todos os índices. </translation>
</message>
<message>
<source>-reindex-chainstate option is not compatible with -coinstatsindex. Please temporarily disable coinstatsindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.</source>
<translation type="unfinished">a opção "-reindex-chainstate" não é compatível com a opção "-coinstatsindex". Por favor desative temporariamente a opção "coinstatsindex" enquanto estiver utilizando "-reindex-chainstate", ou troque "-reindex-chainstate" por "-reindex" para recriar completamente todos os índices.</translation>
</message>
<message>
<source>-reindex-chainstate option is not compatible with -txindex. Please temporarily disable txindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.</source>
<translation type="unfinished">a opção "-reindex-chainstate" não é compatível com a opção "-coinstatsindex". Por favor desative temporariamente a opção "coinstatsindex" enquanto estiver utilizando "-reindex-chainstate", ou troque "-reindex-chainstate" por "-reindex" para recriar completamente todos os índices.</translation>
</message>
<message>
<source>Assumed-valid: last wallet synchronisation goes beyond available block data. You need to wait for the background validation chain to download more blocks.</source>
<translation type="unfinished">Assumed-valid: a ultima sincronização da carteira foi além dos blocos de dados disponíveis. Você deve aguardar que a validação em segundo plano baixe mais blocos. </translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same time.</source>
<translation type="unfinished">Não é possível fornecer conexões específicas e ter addrman procurando conexões ao mesmo tempo.</translation>
@@ -533,10 +565,66 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Error loading %s: External signer wallet being loaded without external signer support compiled</source>
<translation type="unfinished">Erro ao abrir %s: Carteira com assinador externo. Não foi compilado suporte para assinadores externos</translation>
</message>
<message>
<source>Error: Address book data in wallet cannot be identified to belong to migrated wallets</source>
<translation type="unfinished">Erro: Os dados do livro de endereços da carteira não puderam ser identificados por pertencerem a carteiras migradas</translation>
</message>
<message>
<source>Error: Duplicate descriptors created during migration. Your wallet may be corrupted.</source>
<translation type="unfinished">Erro: Descritores duplicados criados durante a migração. Sua carteira pode estar corrompida.</translation>
</message>
<message>
<source>Error: Transaction %s in wallet cannot be identified to belong to migrated wallets</source>
<translation type="unfinished">Erro: A transação %s na carteira não pôde ser identificada por pertencer a carteiras migradas</translation>
</message>
<message>
<source>Error: Unable to produce descriptors for this legacy wallet. Make sure the wallet is unlocked first</source>
<translation type="unfinished">Erro: Impossível produzir descritores para esta carteira antiga. Certifique-se que a carteira foi desbloqueada antes</translation>
</message>
<message>
<source>Failed to rename invalid peers.dat file. Please move or delete it and try again.</source>
<translation type="unfinished">Impossível renomear o arquivo peers.dat (inválido). Por favor mova-o ou delete-o e tente novamente.</translation>
</message>
<message>
<source>Incompatible options: -dnsseed=1 was explicitly specified, but -onlynet forbids connections to IPv4/IPv6</source>
<translation type="unfinished">Opções incompatíveis: "-dnsseed=1" foi explicitamente específicada, mas "-onlynet" proíbe conexões para IPv4/IPv6</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is explicitly forbidden: -onion=0</source>
<translation type="unfinished">As conexões de saída foram restringidas a rede Tor (-onlynet-onion) mas o proxy para alcançar a rede Tor foi explicitamente proibido: "-onion=0"</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is not provided: none of -proxy, -onion or -listenonion is given</source>
<translation type="unfinished">As conexões de saída foram restringidas a rede Tor (-onlynet=onion) mas o proxy para acessar a rede Tor não foi fornecido: nenhuma opção "-proxy", "-onion" ou "-listenonion" foi fornecida</translation>
</message>
<message>
<source>Unrecognized descriptor found. Loading wallet %s
The wallet might had been created on a newer version.
Please try running the latest software version.
</source>
<translation type="unfinished">Descriptor não reconhecido foi encontrado. Carregando carteira %s
A carteira pode ter sido criada em uma versão mais nova.
Por favor tente atualizar o software para a última versão.
</translation>
</message>
<message>
<source>Unsupported category-specific logging level -loglevel=%s. Expected -loglevel=&lt;category&gt;:&lt;loglevel&gt;. Valid categories: %s. Valid loglevels: %s.</source>
<translation type="unfinished">Categoria especificada no nível de log não suportada "-loglevel=%s". Esperado "-loglevel=&lt;category&gt;:&lt;loglevel&gt;. Categorias validas: %s. Níveis de log válidos: %s.</translation>
</message>
<message>
<source>
Unable to cleanup failed migration</source>
<translation type="unfinished">
Impossível limpar a falha de migração</translation>
</message>
<message>
<source>
Unable to restore backup of wallet.</source>
<translation type="unfinished">
Impossível restaurar backup da carteira.</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished">A configuração %s somente é aplicada na rede %s quando na sessão [%s].</translation>
@@ -601,18 +689,58 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Error reading from database, shutting down.</source>
<translation type="unfinished">Erro ao ler o banco de dados. Encerrando.</translation>
</message>
<message>
<source>Error: Could not add watchonly tx to watchonly wallet</source>
<translation type="unfinished">Erro: impossível adicionar tx apenas-visualização para carteira apenas-visualização</translation>
</message>
<message>
<source>Error: Could not delete watchonly transactions</source>
<translation type="unfinished">Erro: Impossível excluir transações apenas-visualização </translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation type="unfinished">Erro: Espaço em disco menor que %s</translation>
</message>
<message>
<source>Error: Failed to create new watchonly wallet</source>
<translation type="unfinished">Erro: Falha ao criar carteira apenas-visualização</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation type="unfinished">Keypool exaurida, por gentileza execute keypoolrefill primeiro</translation>
</message>
<message>
<source>Error: Not all watchonly txs could be deleted</source>
<translation type="unfinished">Erro: Nem todos os txs apenas-visualização foram excluídos</translation>
</message>
<message>
<source>Error: This wallet already uses SQLite</source>
<translation type="unfinished">Erro: Essa carteira já utiliza o SQLite</translation>
</message>
<message>
<source>Error: This wallet is already a descriptor wallet</source>
<translation type="unfinished">Erro: Esta carteira já contém um descritor</translation>
</message>
<message>
<source>Error: Unable to begin reading all records in the database</source>
<translation type="unfinished">Erro: impossível ler todos os registros no banco de dados</translation>
</message>
<message>
<source>Error: Unable to make a backup of your wallet</source>
<translation type="unfinished">Erro: Impossível efetuar backup da carteira</translation>
</message>
<message>
<source>Error: Unable to parse version %u as a uint32_t</source>
<translation type="unfinished">Erro: Impossível analisar versão %u como uint32_t</translation>
</message>
<message>
<source>Error: Unable to read all records in the database</source>
<translation type="unfinished">Erro: Impossível ler todos os registros no banco de dados</translation>
</message>
<message>
<source>Error: Unable to remove watchonly address book data</source>
<translation type="unfinished">Erro: Impossível remover dados somente-visualização do Livro de Endereços </translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Falha ao escutar em qualquer porta. Use -listen=0 se você quiser isso.</translation>
@@ -685,6 +813,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation type="unfinished">Máscara de rede especificada em -whitelist: '%s' é inválida</translation>
</message>
<message>
<source>Listening for incoming connections failed (listen returned error %s)</source>
<translation type="unfinished">A espera por conexões de entrada falharam (a espera retornou o erro %s)</translation>
</message>
<message>
<source>Loading P2P addresses…</source>
<translation type="unfinished">Carregando endereços P2P...</translation>
@@ -841,6 +973,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Transaction too large</source>
<translation type="unfinished">Transação muito grande</translation>
</message>
<message>
<source>Unable to allocate memory for -maxsigcachesize: '%s' MiB</source>
<translation type="unfinished">Impossível alocar memória para a opção "-maxsigcachesize: '%s' MiB</translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished">Erro ao vincular em %s neste computador (bind retornou erro %s)</translation>
@@ -853,6 +989,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">Não foi possível criar arquivo de PID '%s': %s</translation>
</message>
<message>
<source>Unable to find UTXO for external input</source>
<translation type="unfinished">Impossível localizar e entrada externa UTXO</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">Não foi possível gerar as chaves iniciais</translation>
@@ -869,6 +1009,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished">Não foi possível iniciar o servidor HTTP. Veja o log de depuração para detaihes.</translation>
</message>
<message>
<source>Unable to unload the wallet before migrating</source>
<translation type="unfinished">Impossível desconectar carteira antes de migrá-la</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">Valor do parâmetro -blockfilterindex desconhecido %s.</translation>
@@ -885,6 +1029,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Rede desconhecida especificada em -onlynet: '%s'</translation>
</message>
<message>
<source>Unsupported global logging level -loglevel=%s. Valid values: %s.</source>
<translation type="unfinished">Nível de log global inválido "-loglevel=%s". Valores válidos: %s.</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Categoria de log desconhecida %s=%s.</translation>
@@ -1108,8 +1256,8 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n bloco processado do histórico de transações.</numerusform>
<numerusform>%n blocos processados do histórico de transações.</numerusform>
</translation>
</message>
<message>
@@ -1265,8 +1413,8 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n conexão ativa na rede Bitcoin.</numerusform>
<numerusform>%nconexões ativas na rede Bitcoin.</numerusform>
</translation>
</message>
<message>
@@ -1289,6 +1437,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<extracomment>A context menu item. The network activity was disabled previously.</extracomment>
<translation type="unfinished">Ativar atividade de conexões</translation>
</message>
<message>
<source>Pre-syncing Headers (%1%)</source>
<translation type="unfinished">Pré-Sincronizando cabeçalhos (%1%)...</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Erro: %1</translation>
@@ -1524,7 +1676,11 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Create wallet warning</source>
<translation type="unfinished">Criar carteira alerta</translation>
</message>
</context>
<message>
<source>Too many external signers found</source>
<translation type="unfinished">Encontrados muitos assinantes externos</translation>
</message>
</context>
<context>
<name>LoadWalletsActivity</name>
<message>
@@ -1570,6 +1726,11 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<extracomment>Title of progress window which is displayed when wallets are being restored.</extracomment>
<translation type="unfinished">Restaurar Carteira</translation>
</message>
<message>
<source>Restoring Wallet &lt;b&gt;%1&lt;/b&gt;</source>
<extracomment>Descriptive text of the restore wallets progress window which indicates to the user that wallets are currently being restored.</extracomment>
<translation type="unfinished">Restaurando Carteira &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
<message>
<source>Restore wallet failed</source>
<extracomment>Title of message box which is displayed when the wallet could not be restored.</extracomment>
@@ -1751,22 +1912,22 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n GB de espaço disponível</numerusform>
<numerusform>%n GB de espaço disponível</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(de %n GB necessário)</numerusform>
<numerusform>(de %n GB necessários)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(%n GB necessário para a cadeia completa)</numerusform>
<numerusform>(%n GB necessários para a cadeia completa)</numerusform>
</translation>
</message>
<message>
@@ -1781,8 +1942,8 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(suficiente para restaurar backup de %n dia atrás)</numerusform>
<numerusform>(suficiente para restaurar backups de %n dias atrás)</numerusform>
</translation>
</message>
<message>
@@ -1829,6 +1990,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<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 type="unfinished">Esta sincronização inicial é muito exigente e pode expor problemas de hardware com o computador que passaram despercebidos anteriormente. Cada vez que você executar o %1, irá continuar baixando de onde parou.</translation>
</message>
<message>
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2 GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation type="unfinished">Quando clicar em OK, %1 iniciará o download e irá processar a cadeia de blocos completa %4 (%2 GB) iniciando com as mais recentes transações em %3 enquanto %4 é processado. </translation>
</message>
<message>
<source>If you have chosen to limit block chain storage (pruning), the historical data must still be downloaded and processed, but will be deleted afterward to keep your disk usage low.</source>
<translation type="unfinished">Se você escolheu limitar o armazenamento da block chain (prunando), os dados históricos ainda devem ser baixados e processados, mas serão apagados no final para manter o uso de disco baixo.</translation>
@@ -1922,7 +2087,11 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Unknown. Syncing Headers (%1, %2%)…</source>
<translation type="unfinished">Desconhecido. Sincronizando cabeçalhos (%1, %2%)...</translation>
</message>
</context>
<message>
<source>Unknown. Pre-syncing Headers (%1, %2%)…</source>
<translation type="unfinished">Desconhecido. Pré-Sincronizando Cabeçalhos (%1, %2%)...</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
<message>
@@ -1973,6 +2142,10 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu.</source>
<translation type="unfinished">Minimizar em vez de fechar o programa quando a janela for fechada. Quando essa opção estiver ativa, o programa só será fechado somente pela opção Sair no menu Arquivo.</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line:</source>
<translation type="unfinished">Opções configuradas nessa caixa de diálogo serão sobrescritas pela linhas de comando: </translation>
</message>
<message>
<source>Open the %1 configuration file from the working directory.</source>
<translation type="unfinished">Abrir o arquivo de configuração %1 apartir do diretório trabalho.</translation>
@@ -2187,6 +2360,11 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<extracomment>Text explaining that the settings changed will not come into effect until the client is restarted.</extracomment>
<translation type="unfinished">Reinicialização do aplicativo necessária para efetivar alterações.</translation>
</message>
<message>
<source>Current settings will be backed up at "%1".</source>
<extracomment>Text explaining to the user that the client's current settings will be backed up at a specific location. %1 is a stand-in argument for the backup location's path.</extracomment>
<translation type="unfinished">Configuração atuais serão copiadas em "%1".</translation>
</message>
<message>
<source>Client will be shut down. Do you want to proceed?</source>
<extracomment>Text asking the user to confirm if they would like to proceed with a client shutdown.</extracomment>
@@ -2223,6 +2401,13 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<translation type="unfinished">O endereço proxy fornecido é inválido.</translation>
</message>
</context>
<context>
<name>OptionsModel</name>
<message>
<source>Could not read setting "%1", %2.</source>
<translation type="unfinished">Não foi possível ler as configurações "%1", %2.</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>
@@ -2813,6 +2998,22 @@ Somente é possível assinar com endereços do tipo 'legado'.</translation>
<source>Executing command without any wallet</source>
<translation type="unfinished">Executando comando sem nenhuma carteira</translation>
</message>
<message>
<source>Ctrl+I</source>
<translation type="unfinished">Control+I</translation>
</message>
<message>
<source>Ctrl+T</source>
<translation type="unfinished">Control+T</translation>
</message>
<message>
<source>Ctrl+N</source>
<translation type="unfinished">Control+N</translation>
</message>
<message>
<source>Ctrl+P</source>
<translation type="unfinished">Control+P</translation>
</message>
<message>
<source>Executing command using "%1" wallet</source>
<translation type="unfinished">Executando comando usando a carteira "%1"</translation>
@@ -3326,8 +3527,8 @@ Nota: Como a taxa é calculada por byte, uma taxa de "100 satoshis por kvB" para
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>Confirmação estimada para iniciar em %n bloco.</numerusform>
<numerusform>Confirmação estimada para iniciar em %n blocos.</numerusform>
</translation>
</message>
<message>
@@ -3582,6 +3783,16 @@ Nota: Como a taxa é calculada por byte, uma taxa de "100 satoshis por kvB" para
<extracomment>Text explaining the current status of a transaction, shown in the status field of the details window for this transaction. This status represents an unconfirmed transaction that conflicts with a confirmed transaction.</extracomment>
<translation type="unfinished">conflitado com uma transação com %1 confirmações</translation>
</message>
<message>
<source>0/unconfirmed, in memory pool</source>
<extracomment>Text explaining the current status of a transaction, shown in the status field of the details window for this transaction. This status represents an unconfirmed transaction that is in the memory pool.</extracomment>
<translation type="unfinished">0/não confirmada, na memória</translation>
</message>
<message>
<source>0/unconfirmed, not in memory pool</source>
<extracomment>Text explaining the current status of a transaction, shown in the status field of the details window for this transaction. This status represents an unconfirmed transaction that is not in the memory pool.</extracomment>
<translation type="unfinished">0/não confirmada, fora da memória</translation>
</message>
<message>
<source>abandoned</source>
<extracomment>Text explaining the current status of a transaction, shown in the status field of the details window for this transaction. This status represents an abandoned transaction.</extracomment>
@@ -3640,8 +3851,8 @@ Nota: Como a taxa é calculada por byte, uma taxa de "100 satoshis por kvB" para
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>pronta em mais %n bloco</numerusform>
<numerusform>prontas em mais %n blocos</numerusform>
</translation>
</message>
<message>

View File

@@ -575,7 +575,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation type="unfinished">Сумма транзакции за вычетом комиссии слишком мала</translation>
<translation type="unfinished">Сумма транзакции за вычетом комиссии слишком мала для отправки</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>

View File

@@ -312,31 +312,31 @@ Signing is only possible with addresses of the type 'legacy'</translation>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform>%nวินาที</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform>%nนาที</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform>%nชั่วโมง</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform>%nวัน</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform>%nสัปดาห์</numerusform>
</translation>
</message>
<message>
@@ -346,7 +346,7 @@ Signing is only possible with addresses of the type 'legacy'</translation>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform>%nปี</numerusform>
</translation>
</message>
<message>
@@ -1526,13 +1526,13 @@ Signing is only possible with addresses of the type 'legacy'</translation>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform> %n GB </numerusform>
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform>( %n GB )</numerusform>
</translation>
</message>
<message numerus="yes">

View File

@@ -247,6 +247,10 @@ Cüzdan kilidini aç.</translation>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">%1 ayar dosyası bozuk veya geçersiz olabilir.</translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished">Sızıntı istisnası</translation>
@@ -985,7 +989,7 @@ Cüzdan kilidini aç.</translation>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform>İşlem geçmişinin %n bloğu işlendi.</numerusform>
</translation>
</message>
<message>
@@ -1403,7 +1407,11 @@ Cüzdan kilidini aç.</translation>
<source>Create wallet warning</source>
<translation type="unfinished">Cüzdan oluşturma uyarısı</translation>
</message>
</context>
<message>
<source>Too many external signers found</source>
<translation type="unfinished">Çok fazla harici imzalayan bulundu</translation>
</message>
</context>
<context>
<name>LoadWalletsActivity</name>
<message>
@@ -1449,6 +1457,16 @@ Cüzdan kilidini aç.</translation>
<extracomment>Title of progress window which is displayed when wallets are being restored.</extracomment>
<translation type="unfinished">Cüzdanı Geri Yükle</translation>
</message>
<message>
<source>Restore wallet failed</source>
<extracomment>Title of message box which is displayed when the wallet could not be restored.</extracomment>
<translation type="unfinished">Cüzdan geri yüklenemedi</translation>
</message>
<message>
<source>Restore wallet warning</source>
<extracomment>Title of message box which is displayed when the wallet is restored with some warning.</extracomment>
<translation type="unfinished">Cüzdan uyarısını geri yükle</translation>
</message>
</context>
<context>
<name>WalletController</name>

View File

@@ -716,6 +716,34 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Failed to rename invalid peers.dat file. Please move or delete it and try again.</source>
<translation type="unfinished">Не вдалося перейменувати недійсний файл peers.dat. Будь ласка, перемістіть його та повторіть спробу </translation>
</message>
<message>
<source>Incompatible options: -dnsseed=1 was explicitly specified, but -onlynet forbids connections to IPv4/IPv6</source>
<translation type="unfinished">Несумісні параметри: чітко вказано -dnsseed=1, але -onlynet забороняє IPv4/IPv6 з'єднання</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is explicitly forbidden: -onion=0</source>
<translation type="unfinished">Вихідні з'єднання обмежені мережею Tor (-onlynet=onion), але проксі-сервер для доступу до мережі Tor повністю заборонений: -onion=0</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is not provided: none of -proxy, -onion or -listenonion is given</source>
<translation type="unfinished">Вихідні з'єднання обмежені мережею Tor (-onlynet=onion), але проксі-сервер для доступу до мережі Tor не призначено: не вказано ні -proxy, ні -onion, ані -listenonion</translation>
</message>
<message>
<source>Unrecognized descriptor found. Loading wallet %s
The wallet might had been created on a newer version.
Please try running the latest software version.
</source>
<translation type="unfinished">Виявлено нерозпізнаний дескриптор. Завантаження гаманця %s
Можливо, гаманець було створено новішою версією.
Спробуйте найновішу версію програми.
</translation>
</message>
<message>
<source>Unsupported category-specific logging level -loglevel=%s. Expected -loglevel=&lt;category&gt;:&lt;loglevel&gt;. Valid categories: %s. Valid loglevels: %s.</source>
<translation type="unfinished">Непідтримуваний категорійний рівень журналювання -loglevel=%s. Очікується -loglevel=&lt;category&gt;:&lt;loglevel&gt;. Припустимі категорії: %s. Припустимі рівні: %s.</translation>
</message>
<message>
<source>
Unable to cleanup failed migration</source>
@@ -852,6 +880,10 @@ Unable to restore backup of wallet.</source>
<source>Error: No %s addresses available.</source>
<translation type="unfinished">Помилка: Немає доступних %s адрес.</translation>
</message>
<message>
<source>Error: Not all watchonly txs could be deleted</source>
<translation type="unfinished">Помилка: Не всі транзакції "тільки перегляд" вдалося видалити</translation>
</message>
<message>
<source>Error: This wallet already uses SQLite</source>
<translation type="unfinished">Помилка; Цей гаманець вже використовує SQLite</translation>
@@ -1188,6 +1220,10 @@ Unable to restore backup of wallet.</source>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished">Активовані невідомі нові правила (versionbit %i)</translation>
</message>
<message>
<source>Unsupported global logging level -loglevel=%s. Valid values: %s.</source>
<translation type="unfinished">Непідтримуваний глобальний рівень журналювання -loglevel=%s. Припустимі значення: %s.</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Непідтримувана категорія ведення журналу %s=%s.</translation>
@@ -1544,7 +1580,7 @@ Unable to restore backup of wallet.</source>
<message>
<source>Wallet Name</source>
<extracomment>Label of the input field where the name of the wallet is entered.</extracomment>
<translation type="unfinished">Назва Гаманця</translation>
<translation type="unfinished">Назва гаманця</translation>
</message>
<message>
<source>&amp;Window</source>
@@ -1968,7 +2004,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Wallet Name</source>
<translation type="unfinished">Назва Гаманця</translation>
<translation type="unfinished">Назва гаманця</translation>
</message>
<message>
<source>Wallet</source>
@@ -1976,7 +2012,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation type="unfinished">Зашифруйте гаманець. Гаманець буде зашифрований за допомогою пароля на ваш вибір.</translation>
<translation type="unfinished">Зашифрувати гаманець. Гаманець буде зашифрований за допомогою обраного вами пароля.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
@@ -1988,7 +2024,7 @@ Unable to restore backup of wallet.</source>
</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 type="unfinished">Вимкнути приватні ключі для цього гаманця. Гаманці з вимкнутими приватними ключами не матимуть приватних ключів і не можуть мати набір HD або імпортовані приватні ключі. Це ідеально підходить для гаманців-для-перегляду.</translation>
<translation type="unfinished">Вимкнути приватні ключі для цього гаманця. Гаманці з вимкнутими приватними ключами не матимуть приватних ключів і не можуть мати набір HD-генератор або імпортовані приватні ключі. Це ідеально підходить для гаманців-для-перегляду.</translation>
</message>
<message>
<source>Disable Private Keys</source>
@@ -1996,7 +2032,7 @@ Unable to restore backup of wallet.</source>
</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 type="unfinished">Зробіть порожній гаманець. Порожні гаманці спочатку не мають приватних ключів або сценаріїв. Пізніше можна імпортувати приватні ключі та адреси або встановити HD-насіння.</translation>
<translation type="unfinished">Створити пустий гаманець. Пусті гаманці спочатку не мають приватних ключів або скриптів. Пізніше можна імпортувати приватні ключі та адреси або встановити HD-генератор.</translation>
</message>
<message>
<source>Make Blank Wallet</source>
@@ -2004,7 +2040,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Use descriptors for scriptPubKey management</source>
<translation type="unfinished">Використовуйте дескриптори для управління scriptPubKey</translation>
<translation type="unfinished">Використовувати дескриптори для управління scriptPubKey</translation>
</message>
<message>
<source>Descriptor Wallet</source>
@@ -2248,7 +2284,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the bitcoin network, as detailed below.</source>
<translation type="unfinished">Нещодавні транзакції ще не відображаються, тому баланс вашого гаманця може бути неточним. Ця інформація буде вірною після того, як ваш гаманець завершить синхронізацію з мережею Біткоїн, враховуйте показники нижче.</translation>
<translation type="unfinished">Нещодавні транзакції ще не відображаються, тому баланс вашого гаманця може бути неточним. Ця інформація буде вірною після того, як ваш гаманець завершить синхронізацію з мережею Біткоїн (дивіться нижче).</translation>
</message>
<message>
<source>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</source>
@@ -2272,11 +2308,11 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Progress</source>
<translation type="unfinished">Прогрес</translation>
<translation type="unfinished">Перебіг синхронізації</translation>
</message>
<message>
<source>Progress increase per hour</source>
<translation type="unfinished">Прогрес за годину</translation>
<translation type="unfinished">Прогрес синхронізації за годину</translation>
</message>
<message>
<source>Estimated time left until synced</source>
@@ -2327,7 +2363,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>&amp;Start %1 on system login</source>
<translation type="unfinished">&amp;Запускати %1 при вході в систему</translation>
<translation type="unfinished">Запускати %1 при в&amp;ході в систему</translation>
</message>
<message>
<source>Enabling pruning significantly reduces the disk space required to store transactions. All blocks are still fully validated. Reverting this setting requires re-downloading the entire blockchain.</source>
@@ -2335,7 +2371,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Size of &amp;database cache</source>
<translation type="unfinished">Розмір &amp;кешу бази даних</translation>
<translation type="unfinished">Розмір ке&amp;шу бази даних</translation>
</message>
<message>
<source>Number of script &amp;verification threads</source>
@@ -2415,7 +2451,7 @@ Unable to restore backup of wallet.</source>
<message>
<source>Enable R&amp;PC server</source>
<extracomment>An Options window setting to enable the RPC server.</extracomment>
<translation type="unfinished">Увімкнути RPC &amp;сервер</translation>
<translation type="unfinished">Увімкнути RPC се&amp;рвер</translation>
</message>
<message>
<source>W&amp;allet</source>
@@ -2437,7 +2473,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>Enable coin &amp;control features</source>
<translation type="unfinished">Ввімкнути &amp;керування входами</translation>
<translation type="unfinished">Ввімкнути керування в&amp;ходами</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>
@@ -2445,12 +2481,12 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>&amp;Spend unconfirmed change</source>
<translation type="unfinished">&amp;Витрачати непідтверджену решту</translation>
<translation type="unfinished">Витрачати непідтверджену &amp;решту</translation>
</message>
<message>
<source>Enable &amp;PSBT controls</source>
<extracomment>An options window setting to enable PSBT controls.</extracomment>
<translation type="unfinished">Увімкнути елементи керування &amp;PSBT</translation>
<translation type="unfinished">Увімкнути функції &amp;частково підписаних біткоїн-транзакцій (PSBT)</translation>
</message>
<message>
<source>Whether to show PSBT controls.</source>
@@ -2463,7 +2499,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>&amp;External signer script path</source>
<translation type="unfinished">Шлях до скрипту &amp;зовнішнього підписувача</translation>
<translation type="unfinished">&amp;Шлях до скрипту зовнішнього підписувача</translation>
</message>
<message>
<source>Full path to a Bitcoin Core compatible script (e.g. C:\Downloads\hwi.exe or /Users/you/Downloads/hwi.py). Beware: malware can steal your coins!</source>
@@ -2527,7 +2563,7 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>&amp;Show tray icon</source>
<translation type="unfinished">&amp;Показувати піктограму у системному треї</translation>
<translation type="unfinished">Показувати &amp;піктограму у системному треї</translation>
</message>
<message>
<source>Show only a tray icon after minimizing the window.</source>
@@ -2535,11 +2571,11 @@ Unable to restore backup of wallet.</source>
</message>
<message>
<source>&amp;Minimize to the tray instead of the taskbar</source>
<translation type="unfinished">Мінімізувати &amp;у трей</translation>
<translation type="unfinished">Мінімізувати у &amp;трей</translation>
</message>
<message>
<source>M&amp;inimize on close</source>
<translation type="unfinished">Згортати замість закритт&amp;я</translation>
<translation type="unfinished">Зго&amp;ртати замість закриття</translation>
</message>
<message>
<source>&amp;Display</source>

View File

@@ -33,10 +33,42 @@
<source>Enter address or label to search</source>
<translation type="unfinished">Qidirish uchun manzil yoki yorliqni kiriting</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">Joriy yorliqdagi ma'lumotlarni faylga eksport qilish</translation>
</message>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;Eksport</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;O'chirish</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished">Coin yuborish uchun manzilni tanlang</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation type="unfinished">Coinlarni qabul qilish uchun manzilni tanlang</translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation type="unfinished">&amp;Tanlash</translation>
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished">Manzillarni yuborish</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation type="unfinished">Qabul qilish manzillari</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 type="unfinished">Quyida to'lovlarni jo'natish uchun Bitcoin manzillaringiz. Coinlarni yuborishdan oldin har doim miqdor va qabul qilish manzilini tekshiring.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp;Manzillarni nusxalash</translation>
@@ -53,6 +85,17 @@
<translation type="unfinished">Manzil</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation type="unfinished">Haqiqatan ham hamyoningizni shifrlamoqchimisiz?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation type="unfinished">Hamyon shifrlangan</translation>
</message>
</context>
<context>
<name>QObject</name>
<message numerus="yes">
@@ -98,6 +141,25 @@
</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished">HTTP serverni ishga tushirib bo'lmadi. Tafsilotlar uchun disk raskadrovka jurnaliga qarang.</translation>
</message>
<message>
<source>Verifying blocks…</source>
<translation type="unfinished">Bloklar tekshirilmoqda…</translation>
</message>
<message>
<source>Verifying wallet(s)…</source>
<translation type="unfinished">Hamyon(lar) tekshirilmoqda…</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Hamyonni qayta yozish kerak: bajarish uchun 1%s ni qayta ishga tushiring</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message numerus="yes">
@@ -201,4 +263,15 @@
<translation type="unfinished">Manzil</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;Eksport</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">Joriy yorliqdagi ma'lumotlarni faylga eksport qilish</translation>
</message>
</context>
</TS>

View File

@@ -75,9 +75,225 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">使
使</translation>
</message>
</context>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation type="unfinished"> &amp;</translation>
</message>
<message>
<source>&amp;Edit</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Export Address List</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<extracomment>An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</extracomment>
<translation type="unfinished"> %1</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">()</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enter passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>New passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt;LOSE ALL OF YOUR BITCOINS&lt;/b&gt;!</source>
<translation type="unfinished">注意: 如果你忘记了你的钱包&lt;b&gt;&lt;/b&gt;</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation type="unfinished">?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation type="unfinished"></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 type="unfinished">&lt;br/&gt;使&lt;b&gt;10&lt;/b&gt;&lt;b&gt;8&lt;/b&gt;</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation type="unfinished"></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 type="unfinished">重要提示:您之前对钱包文件所做的任何备份都应该替换为新生成的加密钱包文件使</translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The supplied passphrases do not match.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallet unlock failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The passphrase entered for the wallet decryption was incorrect.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wallet passphrase was successfully changed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warning: The Caps Lock key is on!</source>
<translation type="unfinished">警告:大写锁定键已打开!</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
<message>
<source>IP/Netmask</source>
<translation type="unfinished">IP/</translation>
</message>
<message>
<source>Banned Until</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">%1</translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation type="unfinished">%1退</translation>
</message>
<message>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An internal error occurred. %1 will attempt to continue safely. This is an unexpected bug which can be reported as described below.</source>
<translation type="unfinished">%1</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Do you want to reset settings to default values, or to abort without making changes?</source>
<extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment>
<translation type="unfinished">?</translation>
</message>
<message>
<source>A fatal error occurred. Check that settings file is writable, or try running with -nosettings.</source>
<extracomment>Explanatory text shown on startup when the settings file could not be written. Prompts user to check that we have the ability to write to the file. Explains that the user has the option of running without a settings file.</extracomment>
<translation type="unfinished">使-nosettings运行</translation>
</message>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">错误:指定的数据目录%1</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">错误:无法解析配置文件:%1</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">: %1</translation>
</message>
<message>
<source>%1 didn't yet exit safely</source>
<translation type="unfinished">%1退</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
@@ -115,8 +331,51 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Show general overview of wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Transactions</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Browse transaction history</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>E&amp;xit</source>
<translation type="unfinished">退&amp;</translation>
</message>
<message>
<source>Quit application</source>
<translation type="unfinished">退</translation>
</message>
<message>
<source>&amp;About %1</source>
<translation type="unfinished">&amp; %1</translation>
</message>
<message>
<source>Show information about %1</source>
<translation type="unfinished">%1</translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
<translation type="unfinished"></translation>

View File

@@ -273,7 +273,7 @@ static RPCHelpMan deriveaddresses()
UniValue addresses(UniValue::VARR);
for (int i = range_begin; i <= range_end; ++i) {
for (int64_t i = range_begin; i <= range_end; ++i) {
FlatSigningProvider provider;
std::vector<CScript> scripts;
if (!desc->Expand(i, key_provider, scripts, provider)) {

View File

@@ -146,6 +146,16 @@ static bool CreateSig(const BaseSignatureCreator& creator, SignatureData& sigdat
static bool CreateTaprootScriptSig(const BaseSignatureCreator& creator, SignatureData& sigdata, const SigningProvider& provider, std::vector<unsigned char>& sig_out, const XOnlyPubKey& pubkey, const uint256& leaf_hash, SigVersion sigversion)
{
KeyOriginInfo info;
if (provider.GetKeyOriginByXOnly(pubkey, info)) {
auto it = sigdata.taproot_misc_pubkeys.find(pubkey);
if (it == sigdata.taproot_misc_pubkeys.end()) {
sigdata.taproot_misc_pubkeys.emplace(pubkey, std::make_pair(std::set<uint256>({leaf_hash}), info));
} else {
it->second.first.insert(leaf_hash);
}
}
auto lookup_key = std::make_pair(pubkey, leaf_hash);
auto it = sigdata.taproot_script_sigs.find(lookup_key);
if (it != sigdata.taproot_script_sigs.end()) {
@@ -170,17 +180,6 @@ static bool SignTaprootScript(const SigningProvider& provider, const BaseSignatu
// <xonly pubkey> OP_CHECKSIG
if (script.size() == 34 && script[33] == OP_CHECKSIG && script[0] == 0x20) {
XOnlyPubKey pubkey{Span{script}.subspan(1, 32)};
KeyOriginInfo info;
if (provider.GetKeyOriginByXOnly(pubkey, info)) {
auto it = sigdata.taproot_misc_pubkeys.find(pubkey);
if (it == sigdata.taproot_misc_pubkeys.end()) {
sigdata.taproot_misc_pubkeys.emplace(pubkey, std::make_pair(std::set<uint256>({leaf_hash}), info));
} else {
it->second.first.insert(leaf_hash);
}
}
std::vector<unsigned char> sig;
if (CreateTaprootScriptSig(creator, sigdata, provider, sig, pubkey, leaf_hash, sigversion)) {
result = Vector(std::move(sig));

View File

@@ -747,7 +747,7 @@ RPCHelpMan fundrawtransaction()
"If that happens, you will need to fund the transaction with different inputs and republish it."},
{"changeAddress", RPCArg::Type::STR, RPCArg::DefaultHint{"automatic"}, "The bitcoin address to receive the change"},
{"changePosition", RPCArg::Type::NUM, RPCArg::DefaultHint{"random"}, "The index of the change output"},
{"change_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -changetype"}, "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
{"change_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -changetype"}, "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", \"bech32\", and \"bech32m\"."},
{"includeWatching", RPCArg::Type::BOOL, RPCArg::DefaultHint{"true for watch-only wallets, otherwise false"}, "Also select inputs which are watch only.\n"
"Only solvable inputs can be used. Watch-only destinations are solvable if the public key and/or output script was imported,\n"
"e.g. with 'importpubkey' or 'importmulti' with the 'pubkeys' or 'desc' field."},
@@ -1144,7 +1144,7 @@ RPCHelpMan send()
{"add_to_wallet", RPCArg::Type::BOOL, RPCArg::Default{true}, "When false, returns a serialized transaction which will not be added to the wallet or broadcast"},
{"change_address", RPCArg::Type::STR, RPCArg::DefaultHint{"automatic"}, "The bitcoin address to receive the change"},
{"change_position", RPCArg::Type::NUM, RPCArg::DefaultHint{"random"}, "The index of the change output"},
{"change_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -changetype"}, "The output type to use. Only valid if change_address is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
{"change_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -changetype"}, "The output type to use. Only valid if change_address is not specified. Options are \"legacy\", \"p2sh-segwit\", \"bech32\" and \"bech32m\"."},
{"fee_rate", RPCArg::Type::AMOUNT, RPCArg::DefaultHint{"not set, fall back to wallet fee estimation"}, "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},
{"include_watching", RPCArg::Type::BOOL, RPCArg::DefaultHint{"true for watch-only wallets, otherwise false"}, "Also select inputs which are watch only.\n"
"Only solvable inputs can be used. Watch-only destinations are solvable if the public key and/or output script was imported,\n"
@@ -1380,7 +1380,7 @@ RPCHelpMan sendall()
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Input not available. UTXO (%s:%d) was already spent.", input.prevout.hash.ToString(), input.prevout.n));
}
const CWalletTx* tx{pwallet->GetWalletTx(input.prevout.hash)};
if (!tx || pwallet->IsMine(tx->tx->vout[input.prevout.n]) != (coin_control.fAllowWatchOnly ? ISMINE_ALL : ISMINE_SPENDABLE)) {
if (!tx || input.prevout.n >= tx->tx->vout.size() || !(pwallet->IsMine(tx->tx->vout[input.prevout.n]) & (coin_control.fAllowWatchOnly ? ISMINE_ALL : ISMINE_SPENDABLE))) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Input not found. UTXO (%s:%d) is not part of wallet.", input.prevout.hash.ToString(), input.prevout.n));
}
total_input_value += tx->tx->vout[input.prevout.n].nValue;
@@ -1597,7 +1597,7 @@ RPCHelpMan walletcreatefundedpsbt()
"If that happens, you will need to fund the transaction with different inputs and republish it."},
{"changeAddress", RPCArg::Type::STR, RPCArg::DefaultHint{"automatic"}, "The bitcoin address to receive the change"},
{"changePosition", RPCArg::Type::NUM, RPCArg::DefaultHint{"random"}, "The index of the change output"},
{"change_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -changetype"}, "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
{"change_type", RPCArg::Type::STR, RPCArg::DefaultHint{"set by -changetype"}, "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", \"bech32\", and \"bech32m\"."},
{"includeWatching", RPCArg::Type::BOOL, RPCArg::DefaultHint{"true for watch-only wallets, otherwise false"}, "Also select inputs which are watch only"},
{"lockUnspents", RPCArg::Type::BOOL, RPCArg::Default{false}, "Lock selected unspent outputs"},
{"fee_rate", RPCArg::Type::AMOUNT, RPCArg::DefaultHint{"not set, fall back to wallet fee estimation"}, "Specify a fee rate in " + CURRENCY_ATOM + "/vB."},

View File

@@ -447,7 +447,7 @@ RPCHelpMan listtransactions()
{RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
{
{RPCResult::Type::BOOL, "involvesWatchonly", /*optional=*/true, "Only returns true if imported addresses were involved in transaction."},
{RPCResult::Type::STR, "address", "The bitcoin address of the transaction."},
{RPCResult::Type::STR, "address", /*optional=*/true, "The bitcoin address of the transaction (not returned if the output does not have an address, e.g. OP_RETURN null data)."},
{RPCResult::Type::STR, "category", "The transaction category.\n"
"\"send\" Transactions sent.\n"
"\"receive\" Non-coinbase transactions received.\n"
@@ -561,7 +561,7 @@ RPCHelpMan listsinceblock()
{RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
{
{RPCResult::Type::BOOL, "involvesWatchonly", /*optional=*/true, "Only returns true if imported addresses were involved in transaction."},
{RPCResult::Type::STR, "address", "The bitcoin address of the transaction."},
{RPCResult::Type::STR, "address", /*optional=*/true, "The bitcoin address of the transaction (not returned if the output does not have an address, e.g. OP_RETURN null data)."},
{RPCResult::Type::STR, "category", "The transaction category.\n"
"\"send\" Transactions sent.\n"
"\"receive\" Non-coinbase transactions received.\n"

View File

@@ -2499,14 +2499,23 @@ TransactionError DescriptorScriptPubKeyMan::FillPSBT(PartiallySignedTransaction&
keys->Merge(std::move(*script_keys));
} else {
// Maybe there are pubkeys listed that we can sign for
script_keys = std::make_unique<FlatSigningProvider>();
for (const auto& pk_pair : input.hd_keypaths) {
const CPubKey& pubkey = pk_pair.first;
std::unique_ptr<FlatSigningProvider> pk_keys = GetSigningProvider(pubkey);
if (pk_keys) {
keys->Merge(std::move(*pk_keys));
}
std::vector<CPubKey> pubkeys;
// ECDSA Pubkeys
for (const auto& [pk, _] : input.hd_keypaths) {
pubkeys.push_back(pk);
}
// Taproot output pubkey
std::vector<std::vector<unsigned char>> sols;
if (Solver(script, sols) == TxoutType::WITNESS_V1_TAPROOT) {
sols[0].insert(sols[0].begin(), 0x02);
pubkeys.emplace_back(sols[0]);
sols[0][0] = 0x03;
pubkeys.emplace_back(sols[0]);
}
// Taproot pubkeys
for (const auto& pk_pair : input.m_tap_bip32_paths) {
const XOnlyPubKey& pubkey = pk_pair.first;
for (unsigned char prefix : {0x02, 0x03}) {
@@ -2514,10 +2523,14 @@ TransactionError DescriptorScriptPubKeyMan::FillPSBT(PartiallySignedTransaction&
std::copy(pubkey.begin(), pubkey.end(), b + 1);
CPubKey fullpubkey;
fullpubkey.Set(b, b + 33);
std::unique_ptr<FlatSigningProvider> pk_keys = GetSigningProvider(fullpubkey);
if (pk_keys) {
keys->Merge(std::move(*pk_keys));
}
pubkeys.push_back(fullpubkey);
}
}
for (const auto& pubkey : pubkeys) {
std::unique_ptr<FlatSigningProvider> pk_keys = GetSigningProvider(pubkey);
if (pk_keys) {
keys->Merge(std::move(*pk_keys));
}
}
}

View File

@@ -44,6 +44,13 @@ class DeriveaddressesTest(BitcoinTestFramework):
combo_descriptor = descsum_create("combo(tprv8ZgxMBicQKsPd7Uf69XL1XwhmjHopUGep8GuEiJDZmbQz6o58LninorQAfcKZWARbtRtfnLcJ5MQ2AtHcQJCCRUcMRvmDUjyEmNUWwx8UbK/1/1/0)")
assert_equal(self.nodes[0].deriveaddresses(combo_descriptor), ["mtfUoUax9L4tzXARpw1oTGxWyoogp52KhJ", "mtfUoUax9L4tzXARpw1oTGxWyoogp52KhJ", address, "2NDvEwGfpEqJWfybzpKPHF2XH3jwoQV3D7x"])
# Before #26275, bitcoind would crash when deriveaddresses was
# called with derivation index 2147483647, which is the maximum
# positive value of a signed int32, and - currently - the
# maximum value that the deriveaddresses bitcoin RPC call
# accepts as derivation index.
assert_equal(self.nodes[0].deriveaddresses(descsum_create("wpkh(tprv8ZgxMBicQKsPd7Uf69XL1XwhmjHopUGep8GuEiJDZmbQz6o58LninorQAfcKZWARbtRtfnLcJ5MQ2AtHcQJCCRUcMRvmDUjyEmNUWwx8UbK/1/1/*)"), [2147483647, 2147483647]), ["bcrt1qtzs23vgzpreks5gtygwxf8tv5rldxvvsyfpdkg"])
hardened_without_privkey_descriptor = descsum_create("wpkh(tpubD6NzVbkrYhZ4WaWSyoBvQwbpLkojyoTZPRsgXELWz3Popb3qkjcJyJUGLnL4qHHoQvao8ESaAstxYSnhyswJ76uZPStJRJCTKvosUCJZL5B/1'/1/0)")
assert_raises_rpc_error(-5, "Cannot derive script without private keys", self.nodes[0].deriveaddresses, hardened_without_privkey_descriptor)

View File

@@ -45,6 +45,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
if self.options.descriptors:
self.test_desc()
self.test_send_to_self()
self.test_op_return()
def test_no_blockhash(self):
self.log.info("Test no blockhash")
@@ -448,6 +449,19 @@ class ListSinceBlockTest(BitcoinTestFramework):
assert any(c["address"] == addr for c in coins)
assert all(self.nodes[2].getaddressinfo(c["address"])["ischange"] for c in coins)
def test_op_return(self):
"""Test if OP_RETURN outputs will be displayed correctly."""
block_hash = self.nodes[2].getbestblockhash()
raw_tx = self.nodes[2].createrawtransaction([], [{'data': 'aa'}])
funded_tx = self.nodes[2].fundrawtransaction(raw_tx)
signed_tx = self.nodes[2].signrawtransactionwithwallet(funded_tx['hex'])
tx_id = self.nodes[2].sendrawtransaction(signed_tx['hex'])
op_ret_tx = [tx for tx in self.nodes[2].listsinceblock(blockhash=block_hash)["transactions"] if tx['txid'] == tx_id][0]
assert 'address' not in op_ret_tx
if __name__ == '__main__':
ListSinceBlockTest().main()

View File

@@ -109,6 +109,7 @@ class ListTransactionsTest(BitcoinTestFramework):
self.run_rbf_opt_in_test()
self.run_externally_generated_address_test()
self.run_invalid_parameters_test()
self.test_op_return()
def run_rbf_opt_in_test(self):
"""Test the opt-in-rbf flag for sent and received transactions."""
@@ -284,6 +285,17 @@ class ListTransactionsTest(BitcoinTestFramework):
assert_raises_rpc_error(-8, "Negative count", self.nodes[0].listtransactions, count=-1)
assert_raises_rpc_error(-8, "Negative from", self.nodes[0].listtransactions, skip=-1)
def test_op_return(self):
"""Test if OP_RETURN outputs will be displayed correctly."""
raw_tx = self.nodes[0].createrawtransaction([], [{'data': 'aa'}])
funded_tx = self.nodes[0].fundrawtransaction(raw_tx)
signed_tx = self.nodes[0].signrawtransactionwithwallet(funded_tx['hex'])
tx_id = self.nodes[0].sendrawtransaction(signed_tx['hex'])
op_ret_tx = [tx for tx in self.nodes[0].listtransactions() if tx['txid'] == tx_id][0]
assert 'address' not in op_ret_tx
if __name__ == '__main__':
ListTransactionsTest().main()

View File

@@ -221,6 +221,11 @@ class SendallTest(BitcoinTestFramework):
self.add_utxos([16, 5])
spent_utxo = self.wallet.listunspent()[0]
# fails on out of bounds vout
assert_raises_rpc_error(-8,
"Input not found. UTXO ({}:{}) is not part of wallet.".format(spent_utxo["txid"], 1000),
self.wallet.sendall, recipients=[self.remainder_target], options={"inputs": [{"txid": spent_utxo["txid"], "vout": 1000}]})
# fails on unconfirmed spent UTXO
self.wallet.sendall(recipients=[self.remainder_target])
assert_raises_rpc_error(-8,
@@ -276,6 +281,33 @@ class SendallTest(BitcoinTestFramework):
recipients=[self.remainder_target],
fee_rate=100000)
@cleanup
def sendall_watchonly_specific_inputs(self):
self.log.info("Test sendall with a subset of UTXO pool in a watchonly wallet")
self.add_utxos([17, 4])
utxo = self.wallet.listunspent()[0]
self.nodes[0].createwallet(wallet_name="watching", disable_private_keys=True)
watchonly = self.nodes[0].get_wallet_rpc("watching")
import_req = [{
"desc": utxo["desc"],
"timestamp": 0,
}]
if self.options.descriptors:
watchonly.importdescriptors(import_req)
else:
watchonly.importmulti(import_req)
sendall_tx_receipt = watchonly.sendall(recipients=[self.remainder_target], options={"inputs": [utxo]})
psbt = sendall_tx_receipt["psbt"]
decoded = self.nodes[0].decodepsbt(psbt)
assert_equal(len(decoded["inputs"]), 1)
assert_equal(len(decoded["outputs"]), 1)
assert_equal(decoded["tx"]["vin"][0]["txid"], utxo["txid"])
assert_equal(decoded["tx"]["vin"][0]["vout"], utxo["vout"])
assert_equal(decoded["tx"]["vout"][0]["scriptPubKey"]["address"], self.remainder_target)
# This tests needs to be the last one otherwise @cleanup will fail with "Transaction too large" error
def sendall_fails_with_transaction_too_large(self):
self.log.info("Test that sendall fails if resulting transaction is too large")
@@ -341,6 +373,9 @@ class SendallTest(BitcoinTestFramework):
# Sendall fails when providing a fee that is too high
self.sendall_fails_on_high_fee()
# Sendall succeeds with watchonly wallets spending specific UTXOs
self.sendall_watchonly_specific_inputs()
# Sendall fails when many inputs result to too large transaction
self.sendall_fails_with_transaction_too_large()

View File

@@ -5,6 +5,7 @@
"""Test generation and spending of P2TR addresses."""
import random
import uuid
from decimal import Decimal
from test_framework.address import output_key_to_p2tr
@@ -229,17 +230,28 @@ class WalletTaprootTest(BitcoinTestFramework):
def do_test_addr(self, comment, pattern, privmap, treefn, keys):
self.log.info("Testing %s address derivation" % comment)
# Create wallets
wallet_uuid = uuid.uuid4().hex
self.nodes[0].createwallet(wallet_name=f"privs_tr_enabled_{wallet_uuid}", descriptors=True, blank=True)
self.nodes[0].createwallet(wallet_name=f"pubs_tr_enabled_{wallet_uuid}", descriptors=True, blank=True, disable_private_keys=True)
self.nodes[0].createwallet(wallet_name=f"addr_gen_{wallet_uuid}", descriptors=True, disable_private_keys=True, blank=True)
privs_tr_enabled = self.nodes[0].get_wallet_rpc(f"privs_tr_enabled_{wallet_uuid}")
pubs_tr_enabled = self.nodes[0].get_wallet_rpc(f"pubs_tr_enabled_{wallet_uuid}")
addr_gen = self.nodes[0].get_wallet_rpc(f"addr_gen_{wallet_uuid}")
desc = self.make_desc(pattern, privmap, keys, False)
desc_pub = self.make_desc(pattern, privmap, keys, True)
assert_equal(self.nodes[0].getdescriptorinfo(desc)['descriptor'], desc_pub)
result = self.addr_gen.importdescriptors([{"desc": desc_pub, "active": True, "timestamp": "now"}])
result = addr_gen.importdescriptors([{"desc": desc_pub, "active": True, "timestamp": "now"}])
assert(result[0]['success'])
address_type = "bech32m" if "tr" in pattern else "bech32"
for i in range(4):
addr_g = self.addr_gen.getnewaddress(address_type='bech32m')
addr_g = addr_gen.getnewaddress(address_type=address_type)
if treefn is not None:
addr_r = self.make_addr(treefn, keys, i)
assert_equal(addr_g, addr_r)
desc_a = self.addr_gen.getaddressinfo(addr_g)['desc']
desc_a = addr_gen.getaddressinfo(addr_g)['desc']
if desc.startswith("tr("):
assert desc_a.startswith("tr(")
rederive = self.nodes[1].deriveaddresses(desc_a)
@@ -247,25 +259,37 @@ class WalletTaprootTest(BitcoinTestFramework):
assert_equal(rederive[0], addr_g)
# tr descriptors can be imported
result = self.privs_tr_enabled.importdescriptors([{"desc": desc, "timestamp": "now"}])
result = privs_tr_enabled.importdescriptors([{"desc": desc, "timestamp": "now"}])
assert(result[0]["success"])
result = self.pubs_tr_enabled.importdescriptors([{"desc": desc_pub, "timestamp": "now"}])
result = pubs_tr_enabled.importdescriptors([{"desc": desc_pub, "timestamp": "now"}])
assert(result[0]["success"])
# Cleanup
privs_tr_enabled.unloadwallet()
pubs_tr_enabled.unloadwallet()
addr_gen.unloadwallet()
def do_test_sendtoaddress(self, comment, pattern, privmap, treefn, keys_pay, keys_change):
self.log.info("Testing %s through sendtoaddress" % comment)
# Create wallets
wallet_uuid = uuid.uuid4().hex
self.nodes[0].createwallet(wallet_name=f"rpc_online_{wallet_uuid}", descriptors=True, blank=True)
rpc_online = self.nodes[0].get_wallet_rpc(f"rpc_online_{wallet_uuid}")
desc_pay = self.make_desc(pattern, privmap, keys_pay)
desc_change = self.make_desc(pattern, privmap, keys_change)
desc_pay_pub = self.make_desc(pattern, privmap, keys_pay, True)
desc_change_pub = self.make_desc(pattern, privmap, keys_change, True)
assert_equal(self.nodes[0].getdescriptorinfo(desc_pay)['descriptor'], desc_pay_pub)
assert_equal(self.nodes[0].getdescriptorinfo(desc_change)['descriptor'], desc_change_pub)
result = self.rpc_online.importdescriptors([{"desc": desc_pay, "active": True, "timestamp": "now"}])
result = rpc_online.importdescriptors([{"desc": desc_pay, "active": True, "timestamp": "now"}])
assert(result[0]['success'])
result = self.rpc_online.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}])
result = rpc_online.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}])
assert(result[0]['success'])
address_type = "bech32m" if "tr" in pattern else "bech32"
for i in range(4):
addr_g = self.rpc_online.getnewaddress(address_type='bech32m')
addr_g = rpc_online.getnewaddress(address_type=address_type)
if treefn is not None:
addr_r = self.make_addr(treefn, keys_pay, i)
assert_equal(addr_g, addr_r)
@@ -273,31 +297,51 @@ class WalletTaprootTest(BitcoinTestFramework):
to_amnt = random.randrange(1000000, boring_balance)
self.boring.sendtoaddress(address=addr_g, amount=Decimal(to_amnt) / 100000000, subtractfeefromamount=True)
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
test_balance = int(self.rpc_online.getbalance() * 100000000)
test_balance = int(rpc_online.getbalance() * 100000000)
ret_amnt = random.randrange(100000, test_balance)
# Increase fee_rate to compensate for the wallet's inability to estimate fees for script path spends.
res = self.rpc_online.sendtoaddress(address=self.boring.getnewaddress(), amount=Decimal(ret_amnt) / 100000000, subtractfeefromamount=True, fee_rate=200)
res = rpc_online.sendtoaddress(address=self.boring.getnewaddress(), amount=Decimal(ret_amnt) / 100000000, subtractfeefromamount=True, fee_rate=200)
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(self.rpc_online.gettransaction(res)["confirmations"] > 0)
assert(rpc_online.gettransaction(res)["confirmations"] > 0)
# Cleanup
txid = rpc_online.sendall(recipients=[self.boring.getnewaddress()])["txid"]
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(rpc_online.gettransaction(txid)["confirmations"] > 0)
rpc_online.unloadwallet()
def do_test_psbt(self, comment, pattern, privmap, treefn, keys_pay, keys_change):
self.log.info("Testing %s through PSBT" % comment)
# Create wallets
wallet_uuid = uuid.uuid4().hex
self.nodes[0].createwallet(wallet_name=f"psbt_online_{wallet_uuid}", descriptors=True, disable_private_keys=True, blank=True)
self.nodes[1].createwallet(wallet_name=f"psbt_offline_{wallet_uuid}", descriptors=True, blank=True)
self.nodes[1].createwallet(f"key_only_wallet_{wallet_uuid}", descriptors=True, blank=True)
psbt_online = self.nodes[0].get_wallet_rpc(f"psbt_online_{wallet_uuid}")
psbt_offline = self.nodes[1].get_wallet_rpc(f"psbt_offline_{wallet_uuid}")
key_only_wallet = self.nodes[1].get_wallet_rpc(f"key_only_wallet_{wallet_uuid}")
desc_pay = self.make_desc(pattern, privmap, keys_pay, False)
desc_change = self.make_desc(pattern, privmap, keys_change, False)
desc_pay_pub = self.make_desc(pattern, privmap, keys_pay, True)
desc_change_pub = self.make_desc(pattern, privmap, keys_change, True)
assert_equal(self.nodes[0].getdescriptorinfo(desc_pay)['descriptor'], desc_pay_pub)
assert_equal(self.nodes[0].getdescriptorinfo(desc_change)['descriptor'], desc_change_pub)
result = self.psbt_online.importdescriptors([{"desc": desc_pay_pub, "active": True, "timestamp": "now"}])
result = psbt_online.importdescriptors([{"desc": desc_pay_pub, "active": True, "timestamp": "now"}])
assert(result[0]['success'])
result = self.psbt_online.importdescriptors([{"desc": desc_change_pub, "active": True, "timestamp": "now", "internal": True}])
result = psbt_online.importdescriptors([{"desc": desc_change_pub, "active": True, "timestamp": "now", "internal": True}])
assert(result[0]['success'])
result = self.psbt_offline.importdescriptors([{"desc": desc_pay, "active": True, "timestamp": "now"}])
result = psbt_offline.importdescriptors([{"desc": desc_pay, "active": True, "timestamp": "now"}])
assert(result[0]['success'])
result = self.psbt_offline.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}])
result = psbt_offline.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}])
assert(result[0]['success'])
for key in keys_pay + keys_change:
result = key_only_wallet.importdescriptors([{"desc": descsum_create(f"wpkh({key['xprv']}/*)"), "timestamp":"now"}])
assert(result[0]["success"])
address_type = "bech32m" if "tr" in pattern else "bech32"
for i in range(4):
addr_g = self.psbt_online.getnewaddress(address_type='bech32m')
addr_g = psbt_online.getnewaddress(address_type=address_type)
if treefn is not None:
addr_r = self.make_addr(treefn, keys_pay, i)
assert_equal(addr_g, addr_r)
@@ -305,28 +349,43 @@ class WalletTaprootTest(BitcoinTestFramework):
to_amnt = random.randrange(1000000, boring_balance)
self.boring.sendtoaddress(address=addr_g, amount=Decimal(to_amnt) / 100000000, subtractfeefromamount=True)
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
test_balance = int(self.psbt_online.getbalance() * 100000000)
test_balance = int(psbt_online.getbalance() * 100000000)
ret_amnt = random.randrange(100000, test_balance)
# Increase fee_rate to compensate for the wallet's inability to estimate fees for script path spends.
psbt = self.psbt_online.walletcreatefundedpsbt([], [{self.boring.getnewaddress(): Decimal(ret_amnt) / 100000000}], None, {"subtractFeeFromOutputs":[0], "fee_rate": 200, "change_type": "bech32m"})['psbt']
res = self.psbt_offline.walletprocesspsbt(psbt=psbt, finalize=False)
psbt = psbt_online.walletcreatefundedpsbt([], [{self.boring.getnewaddress(): Decimal(ret_amnt) / 100000000}], None, {"subtractFeeFromOutputs":[0], "fee_rate": 200, "change_type": address_type})['psbt']
res = psbt_offline.walletprocesspsbt(psbt=psbt, finalize=False)
for wallet in [psbt_offline, key_only_wallet]:
res = wallet.walletprocesspsbt(psbt=psbt, finalize=False)
decoded = self.psbt_offline.decodepsbt(res["psbt"])
if pattern.startswith("tr("):
for psbtin in decoded["inputs"]:
assert "non_witness_utxo" not in psbtin
assert "witness_utxo" in psbtin
assert "taproot_internal_key" in psbtin
assert "taproot_bip32_derivs" in psbtin
assert "taproot_key_path_sig" in psbtin or "taproot_script_path_sigs" in psbtin
if "taproot_script_path_sigs" in psbtin:
assert "taproot_merkle_root" in psbtin
assert "taproot_scripts" in psbtin
decoded = wallet.decodepsbt(res["psbt"])
if pattern.startswith("tr("):
for psbtin in decoded["inputs"]:
assert "non_witness_utxo" not in psbtin
assert "witness_utxo" in psbtin
assert "taproot_internal_key" in psbtin
assert "taproot_bip32_derivs" in psbtin
assert "taproot_key_path_sig" in psbtin or "taproot_script_path_sigs" in psbtin
if "taproot_script_path_sigs" in psbtin:
assert "taproot_merkle_root" in psbtin
assert "taproot_scripts" in psbtin
rawtx = self.nodes[0].finalizepsbt(res['psbt'])['hex']
res = self.nodes[0].testmempoolaccept([rawtx])
assert res[0]["allowed"]
rawtx = self.nodes[0].finalizepsbt(res['psbt'])['hex']
txid = self.nodes[0].sendrawtransaction(rawtx)
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(self.psbt_online.gettransaction(txid)['confirmations'] > 0)
assert(psbt_online.gettransaction(txid)['confirmations'] > 0)
# Cleanup
psbt = psbt_online.sendall(recipients=[self.boring.getnewaddress()], options={"psbt": True})["psbt"]
res = psbt_offline.walletprocesspsbt(psbt=psbt, finalize=False)
rawtx = self.nodes[0].finalizepsbt(res['psbt'])['hex']
txid = self.nodes[0].sendrawtransaction(rawtx)
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(psbt_online.gettransaction(txid)['confirmations'] > 0)
psbt_online.unloadwallet()
psbt_offline.unloadwallet()
def do_test(self, comment, pattern, privmap, treefn):
nkeys = len(privmap)
@@ -336,21 +395,8 @@ class WalletTaprootTest(BitcoinTestFramework):
self.do_test_psbt(comment, pattern, privmap, treefn, keys[2*nkeys:3*nkeys], keys[3*nkeys:4*nkeys])
def run_test(self):
self.log.info("Creating wallets...")
self.nodes[0].createwallet(wallet_name="privs_tr_enabled", descriptors=True, blank=True)
self.privs_tr_enabled = self.nodes[0].get_wallet_rpc("privs_tr_enabled")
self.nodes[0].createwallet(wallet_name="pubs_tr_enabled", descriptors=True, blank=True, disable_private_keys=True)
self.pubs_tr_enabled = self.nodes[0].get_wallet_rpc("pubs_tr_enabled")
self.nodes[0].createwallet(wallet_name="boring")
self.nodes[0].createwallet(wallet_name="addr_gen", descriptors=True, disable_private_keys=True, blank=True)
self.nodes[0].createwallet(wallet_name="rpc_online", descriptors=True, blank=True)
self.nodes[0].createwallet(wallet_name="psbt_online", descriptors=True, disable_private_keys=True, blank=True)
self.nodes[1].createwallet(wallet_name="psbt_offline", descriptors=True, blank=True)
self.boring = self.nodes[0].get_wallet_rpc("boring")
self.addr_gen = self.nodes[0].get_wallet_rpc("addr_gen")
self.rpc_online = self.nodes[0].get_wallet_rpc("rpc_online")
self.psbt_online = self.nodes[0].get_wallet_rpc("psbt_online")
self.psbt_offline = self.nodes[1].get_wallet_rpc("psbt_offline")
self.log.info("Mining blocks...")
gen_addr = self.boring.getnewaddress()
@@ -460,18 +506,5 @@ class WalletTaprootTest(BitcoinTestFramework):
lambda k1: key(k1)
)
self.log.info("Sending everything back...")
txid = self.rpc_online.sendall(recipients=[self.boring.getnewaddress()])["txid"]
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(self.rpc_online.gettransaction(txid)["confirmations"] > 0)
psbt = self.psbt_online.sendall(recipients=[self.boring.getnewaddress()], options={"psbt": True})["psbt"]
res = self.psbt_offline.walletprocesspsbt(psbt=psbt, finalize=False)
rawtx = self.nodes[0].finalizepsbt(res['psbt'])['hex']
txid = self.nodes[0].sendrawtransaction(rawtx)
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(self.psbt_online.gettransaction(txid)['confirmations'] > 0)
if __name__ == '__main__':
WalletTaprootTest().main()