Compare commits

...

37 Commits

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

Pull request description:

  Need to do this before -final.

ACKs for top commit:
  fanquake:
    ACK 1dfad42595

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

Pull request description:

  Backports the following PRs to the 0.20 branch:

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

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

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

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

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

    const BlockValidationState state_dummy;

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

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

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

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

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

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

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

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

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

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

Pull request description:

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

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

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

Pull request description:

  Currently backports the following to the 0.20 branch:

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

ACKs for top commit:
  laanwj:
    ACK 7f7548d822

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

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

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

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

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

Tree-SHA512: aea19b8f7c069dd8798718af392eea89032aa04fa8644a3f115200c662b1dbfb4a5bfca87fe48bb2e77c977b99e1195ccc9752c46ff3f7bf706f2a980b3dd92e
2020-04-10 18:01:50 +02:00
71 changed files with 6607 additions and 509 deletions

View File

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

View File

@@ -12,16 +12,16 @@
#define CLIENT_VERSION_BUILD 0
/* Version is release */
#define CLIENT_VERSION_IS_RELEASE false
#define CLIENT_VERSION_IS_RELEASE true
/* Major version */
#define CLIENT_VERSION_MAJOR 0
/* Minor version */
#define CLIENT_VERSION_MINOR 19
#define CLIENT_VERSION_MINOR 20
/* Build revision */
#define CLIENT_VERSION_REVISION 99
#define CLIENT_VERSION_REVISION 0
/* Copyright holder(s) before %s replacement */
#define COPYRIGHT_HOLDERS "The %s developers"

View File

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

View File

@@ -1,10 +1,10 @@
AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 19)
define(_CLIENT_VERSION_REVISION, 99)
define(_CLIENT_VERSION_MINOR, 20)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_RC, 0)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2020)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
@@ -1265,9 +1265,9 @@ if test x$use_pkgconfig = xyes; then
BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
fi
if test x$build_bitcoin_cli$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench != xnonononono; then
PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
PKG_CHECK_MODULES([EVENT], [libevent >= 2.0.21],, [AC_MSG_ERROR(libevent version 2.0.21 or greater not found.)])
if test x$TARGET_OS != xwindows; then
PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads >= 2.0.21],, [AC_MSG_ERROR(libevent_pthreads version 2.0.21 or greater not found.)])
fi
fi

View File

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

View File

@@ -161,6 +161,6 @@ script: |
done
mkdir -p ${OUTDIR}/src
git archive --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
git archive --prefix="${DISTNAME}/" --output=${OUTDIR}/src/${DISTNAME}.tar.gz HEAD
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx64.tar.gz

View File

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

View File

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

View File

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

View File

@@ -13,7 +13,7 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Android only) |
| GCC | | [4.8+](https://gcc.gnu.org/) (C++11 support) | | | |
| HarfBuzz-NG | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| libevent | [2.1.11-stable](https://github.com/libevent/libevent/releases) | 2.0.22 | No | | |
| libevent | [2.1.11-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No | | |
| libpng | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| librsvg | | | | | |
| MiniUPnPc | [2.0.20180203](https://miniupnp.tuxfamily.org/files) | | No | | |

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -82,4 +82,5 @@ QT_TS = \
qt/locale/bitcoin_zh.ts \
qt/locale/bitcoin_zh_CN.ts \
qt/locale/bitcoin_zh_HK.ts \
qt/locale/bitcoin_zh_TW.ts
qt/locale/bitcoin_zh_TW.ts \
qt/locale/bitcoin_zu.ts

View File

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

View File

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

View File

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

View File

@@ -519,7 +519,11 @@ void SetupServerArgs()
gArgs.AddArg("-debugexclude=<category>", strprintf("Exclude debugging information for a category. Can be used in conjunction with -debug=1 to output debug logs for all categories except one or more specified categories."), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-logips", strprintf("Include IP addresses in debug output (default: %u)", DEFAULT_LOGIPS), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-logtimestamps", strprintf("Prepend debug output with timestamp (default: %u)", DEFAULT_LOGTIMESTAMPS), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
#ifdef HAVE_THREAD_LOCAL
gArgs.AddArg("-logthreadnames", strprintf("Prepend debug output with name of the originating thread (only available on platforms supporting thread_local) (default: %u)", DEFAULT_LOGTHREADNAMES), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
#else
hidden_args.emplace_back("-logthreadnames");
#endif
gArgs.AddArg("-logtimemicros", strprintf("Add microsecond precision to debug timestamps (default: %u)", DEFAULT_LOGTIMEMICROS), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-mocktime=<n>", "Replace actual time with " + UNIX_EPOCH_TIME + " (default: 0)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
gArgs.AddArg("-maxsigcachesize=<n>", strprintf("Limit sum of signature cache and script execution cache sizes to <n> MiB (default: %u)", DEFAULT_MAX_SIG_CACHE_SIZE), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
@@ -851,7 +855,9 @@ void InitLogging()
LogInstance().m_print_to_console = gArgs.GetBoolArg("-printtoconsole", !gArgs.GetBoolArg("-daemon", false));
LogInstance().m_log_timestamps = gArgs.GetBoolArg("-logtimestamps", DEFAULT_LOGTIMESTAMPS);
LogInstance().m_log_time_micros = gArgs.GetBoolArg("-logtimemicros", DEFAULT_LOGTIMEMICROS);
#ifdef HAVE_THREAD_LOCAL
LogInstance().m_log_threadnames = gArgs.GetBoolArg("-logthreadnames", DEFAULT_LOGTHREADNAMES);
#endif
fLogIPs = gArgs.GetBoolArg("-logips", DEFAULT_LOGIPS);

View File

@@ -1564,26 +1564,32 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
std::vector<CInv> vNotFound;
const CNetMsgMaker msgMaker(pfrom->GetSendVersion());
// Note that if we receive a getdata for a MSG_TX or MSG_WITNESS_TX from a
// block-relay-only outbound peer, we will stop processing further getdata
// messages from this peer (likely resulting in our peer eventually
// disconnecting us).
if (pfrom->m_tx_relay != nullptr) {
// mempool entries added before this time have likely expired from mapRelay
const std::chrono::seconds longlived_mempool_time = GetTime<std::chrono::seconds>() - RELAY_TX_CACHE_TIME;
const std::chrono::seconds mempool_req = pfrom->m_tx_relay->m_last_mempool_req.load();
// mempool entries added before this time have likely expired from mapRelay
const std::chrono::seconds longlived_mempool_time = GetTime<std::chrono::seconds>() - RELAY_TX_CACHE_TIME;
// Get last mempool request time
const std::chrono::seconds mempool_req = pfrom->m_tx_relay != nullptr ? pfrom->m_tx_relay->m_last_mempool_req.load()
: std::chrono::seconds::min();
{
LOCK(cs_main);
// Process as many TX items from the front of the getdata queue as
// possible, since they're common and it's efficient to batch process
// them.
while (it != pfrom->vRecvGetData.end() && (it->type == MSG_TX || it->type == MSG_WITNESS_TX)) {
if (interruptMsgProc)
return;
// Don't bother if send buffer is too full to respond anyway
// The send buffer provides backpressure. If there's no space in
// the buffer, pause processing until the next call.
if (pfrom->fPauseSend)
break;
const CInv &inv = *it;
it++;
const CInv &inv = *it++;
if (pfrom->m_tx_relay == nullptr) {
// Ignore GETDATA requests for transactions from blocks-only peers.
continue;
}
// Send stream from relay memory
bool push = false;
@@ -1611,19 +1617,17 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
}
} // release cs_main
// Only process one BLOCK item per call, since they're uncommon and can be
// expensive to process.
if (it != pfrom->vRecvGetData.end() && !pfrom->fPauseSend) {
const CInv &inv = *it;
const CInv &inv = *it++;
if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK || inv.type == MSG_CMPCT_BLOCK || inv.type == MSG_WITNESS_BLOCK) {
it++;
ProcessGetBlockData(pfrom, chainparams, inv, connman);
}
// else: If the first item on the queue is an unknown type, we erase it
// and continue processing the queue on the next call.
}
// Unknown types in the GetData stay in vRecvGetData and block any future
// message from this peer, see vRecvGetData check in ProcessMessages().
// Depending on future p2p changes, we might either drop unknown getdata on
// the floor or disconnect the peer.
pfrom->vRecvGetData.erase(pfrom->vRecvGetData.begin(), it);
if (!vNotFound.empty()) {
@@ -2257,6 +2261,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
uint32_t nFetchFlags = GetFetchFlags(pfrom);
const auto current_time = GetTime<std::chrono::microseconds>();
uint256* best_block{nullptr};
for (CInv &inv : vInv)
{
@@ -2273,17 +2278,14 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
if (inv.type == MSG_BLOCK) {
UpdateBlockAvailability(pfrom->GetId(), inv.hash);
if (!fAlreadyHave && !fImporting && !fReindex && !mapBlocksInFlight.count(inv.hash)) {
// We used to request the full block here, but since headers-announcements are now the
// primary method of announcement on the network, and since, in the case that a node
// fell back to inv we probably have a reorg which we should get the headers for first,
// we now only provide a getheaders response here. When we receive the headers, we will
// then ask for the blocks we need.
connman->PushMessage(pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexBestHeader), inv.hash));
LogPrint(BCLog::NET, "getheaders (%d) %s to peer=%d\n", pindexBestHeader->nHeight, inv.hash.ToString(), pfrom->GetId());
// Headers-first is the primary method of announcement on
// the network. If a node fell back to sending blocks by inv,
// it's probably for a re-org. The final block hash
// provided should be the highest, so send a getheaders and
// then fetch the blocks we need to catch up.
best_block = &inv.hash;
}
}
else
{
} else {
pfrom->AddInventoryKnown(inv);
if (fBlocksOnly) {
LogPrint(BCLog::NET, "transaction (%s) inv sent in violation of protocol, disconnecting peer=%d\n", inv.hash.ToString(), pfrom->GetId());
@@ -2294,6 +2296,12 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
}
}
}
if (best_block != nullptr) {
connman->PushMessage(pfrom, msgMaker.Make(NetMsgType::GETHEADERS, ::ChainActive().GetLocator(pindexBestHeader), *best_block));
LogPrint(BCLog::NET, "getheaders (%d) %s to peer=%d\n", pindexBestHeader->nHeight, best_block->ToString(), pfrom->GetId());
}
return true;
}

View File

@@ -84,5 +84,6 @@
<file alias="zh_CN">locale/bitcoin_zh_CN.qm</file>
<file alias="zh_HK">locale/bitcoin_zh_HK.qm</file>
<file alias="zh_TW">locale/bitcoin_zh_TW.qm</file>
<file alias="zu">locale/bitcoin_zu.qm</file>
</qresource>
</RCC>

View File

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

View File

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

View File

@@ -21,16 +21,136 @@
<source>C&amp;lose</source>
<translation>ি/িিি</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation> িি ি </translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation> ি </translation>
</message>
<message>
<source>&amp;Export</source>
<translation></translation>
</message>
<message>
<source>&amp;Delete</source>
<translation></translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation> ি </translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation> ি </translation>
</message>
<message>
<source>Receiving addresses</source>
<translation> ি</translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation> ি ি ি ি </translation>
</message>
<message>
<source>Export Address List</source>
<translation>ি ি </translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation> ি (*.csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation> </translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation></translation>
</message>
<message>
<source>Address</source>
<translation>ি </translation>
</message>
</context>
<message>
<source>(no label)</source>
<translation>()</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation> </translation>
</message>
<message>
<source>Enter passphrase</source>
<translation> </translation>
</message>
<message>
<source>New passphrase</source>
<translation> </translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation> </translation>
</message>
<message>
<source>Show passphrase</source>
<translation> </translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation> ি </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation> </translation>
</message>
<message>
<source>Unlock wallet</source>
<translation> </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation> িি </translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation> িি </translation>
</message>
<message>
<source>Change passphrase</source>
<translation> ি </translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation> ি িি </translation>
</message>
<message>
<source>Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt;LOSE ALL OF YOUR BITCOINS&lt;/b&gt;!</source>
<translation> : ি ি &lt;b&gt; ি &lt;/b&gt;!</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation>ি ি ?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation> ি </translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation> ি</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation> ি </translation>
</message>
</context>
<context>
<name>BanTableModel</name>
@@ -44,6 +164,10 @@
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>(no label)</source>
<translation>()</translation>
</message>
</context>
<context>
<name>CreateWalletActivity</name>
@@ -106,13 +230,29 @@
<source>Address</source>
<translation>ি </translation>
</message>
<message>
<source>Label</source>
<translation></translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation></translation>
</message>
<message>
<source>(no label)</source>
<translation>()</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
</context>
<message>
<source>(no label)</source>
<translation>()</translation>
</message>
</context>
<context>
<name>SendCoinsEntry</name>
</context>
@@ -141,13 +281,33 @@
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation></translation>
</message>
<message>
<source>(no label)</source>
<translation>()</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file (*.csv)</source>
<translation> ি (*.csv)</translation>
</message>
<message>
<source>Label</source>
<translation></translation>
</message>
<message>
<source>Address</source>
<translation>ি </translation>
</message>
<message>
<source>Exporting Failed</source>
<translation> </translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
@@ -163,6 +323,14 @@
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation></translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation> ি </translation>
</message>
</context>
<context>
<name>bitcoin-core</name>

View File

@@ -69,6 +69,10 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Aquestes són les vostres adreces de Bitcoin per enviar els pagaments. Sempre reviseu l'import i l'adreça del destinatari abans de transferir monedes.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Aquestes són les teves adreces Bitcoin per rebre pagaments. Utilitza el botó "Crear nova adreça de recepció" de la pestanya de recepció per crear noves adreces.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Copia l'adreça</translation>
@@ -183,6 +187,10 @@
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Introduïu la contrasenya antiga i la contrasenya nova a la cartera.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>Recorda que tot i xifrant la teva cartera, els teus bitcoins no estan completament protegits de robatori a través de programari maliciós que està infectant el teu ordinador.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Cartera per ser encriptada</translation>
@@ -317,6 +325,14 @@
<source>Open &amp;URI...</source>
<translation>Obre un &amp;URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Crear Cartera...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crear una nova cartera</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Moneder:</translation>
@@ -421,6 +437,10 @@
<source>&amp;Command-line options</source>
<translation>Opcions de la &amp;línia d'ordres</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network</source>
<translation><numerusform>Una connexió activa a la xarxa de Bitcoin</numerusform><numerusform>%n connexions actives a la xarxa de Bitcoin</numerusform></translation>
</message>
<message>
<source>Indexing blocks on disk...</source>
<translation>S'estan indexant els blocs al disc...</translation>
@@ -429,6 +449,10 @@
<source>Processing blocks on disk...</source>
<translation>S'estan processant els blocs al disc...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation><numerusform>Processat un bloc de l'historial de transaccions.</numerusform><numerusform>Processat %n blocs de l'historial de transaccions.</numerusform></translation>
</message>
<message>
<source>%1 behind</source>
<translation>%1 darrere</translation>
@@ -457,6 +481,14 @@
<source>Up to date</source>
<translation>Actualitzat</translation>
</message>
<message>
<source>Node window</source>
<translation>Finestra node</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Obrir depurador de node i consola de diagnosi.</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>Adreces d'&amp;enviament</translation>
@@ -465,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>Adreces de &amp;recepció</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Obrir un bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Obre la cartera</translation>
@@ -525,6 +561,10 @@
<source>Error: %1</source>
<translation>Avís: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>Avís: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -747,10 +787,59 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation>Creant cartera &lt;b&gt;%1&lt;/b&gt;...</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation>La creació de cartera ha fallat</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Avís en la creació de la cartera</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<message>
<source>Create Wallet</source>
<translation>Crear cartera</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Nom de la cartera</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Xifra la cartera. La cartera serà xifrada amb la contrasenya que escullis.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Xifrar la cartera</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Deshabilita les claus privades per a aquesta cartera. Carteres amb claus privades deshabilitades no tindran cap clau privada i no podran tenir cap llavor HD o importar claus privades.
Això és ideal per a carteres de mode només lectura.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Deshabilitar claus privades</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation>Crea una cartera en blanc. Carteres en blanc no tenen claus privades inicialment o scripts. Claus privades i adreces poden ser importades, o una llavor HD, més endavant.</translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation>Fes cartera en blanc</translation>
</message>
<message>
<source>Create</source>
<translation>Crear</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -862,6 +951,10 @@
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>Quan feu clic a D'acord, %1 començarà a descarregar i processar la cadena de blocs %4 completa (%2 GB) començant per les primeres transaccions de %3, any de llençament inicial de %4.</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
<translation>Desfer aquest canvi requereix tornar-se a descarregar el blockchain sencer. És més ràpid descarregar la cadena completa primer i després podar. Deshabilita algunes de les característiques avançades.</translation>
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>Aquesta sincronització inicial és molt exigent i pot exposar problemes de maquinari amb l'equip que anteriorment havien passat desapercebuts. Cada vegada que executeu %1, continuarà descarregant des del punt on es va deixar.</translation>
@@ -882,6 +975,10 @@
<source>Bitcoin</source>
<translation>Bitcoin</translation>
</message>
<message>
<source>Discard blocks after verification, except most recent %1 GB (prune)</source>
<translation>Descarta blocs després de la verificació, excepte el més recent %1 GB (podar)</translation>
</message>
<message>
<source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
<translation>Almenys %1 GB de dades s'emmagatzemaran en aquest directori, i creixerà amb el temps.</translation>
@@ -906,7 +1003,19 @@
<source>Error</source>
<translation>Error</translation>
</message>
</context>
<message numerus="yes">
<source>%n GB of free space available</source>
<translation><numerusform>Un GB d'espai lliure disponible.</numerusform><numerusform>%n GB d'espai lliure disponibles</numerusform></translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation><numerusform>(Un GB necessari)</numerusform><numerusform>(de %n GB necessàris)</numerusform></translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation><numerusform>(Un GB necessari per a la cadena completa)</numerusform><numerusform>(Un GB necessari per a la cadena completa)</numerusform></translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
@@ -953,6 +1062,14 @@
<source>Hide</source>
<translation>Amaga</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 sincronitzant ara mateix. Es descarregaran capçaleres i blocs d'altres peers i es validaran fins a obtenir la punta de la cadena de blocs. </translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Desconegut. Sincronització de les capçaleres (%1, %2%)...</translation>
@@ -960,6 +1077,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Obre Bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -967,6 +1088,14 @@
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>Open wallet failed</source>
<translation>Ha fallat l'obertura de la cartera</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Avís en l'obertura de la cartera</translation>
</message>
<message>
<source>default wallet</source>
<translation>moneder per defecte</translation>
@@ -1194,6 +1323,10 @@
<source>&amp;Third party transaction URLs</source>
<translation>URL de transaccions de tercers</translation>
</message>
<message>
<source>Options set in this dialog are overridden by the command line or in the configuration file:</source>
<translation>Opcions configurades en aquest diàleg són sobreescrites per la línia de comandes o el fitxer de configuració:</translation>
</message>
<message>
<source>&amp;OK</source>
<translation>&amp;D'acord</translation>
@@ -1340,6 +1473,18 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' no és una URI vàlida. Usi 'bitcoin:' en lloc seu.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>No es pot processar la petició de pagament perquè BIP70 no està suportat.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>A causa dels defectes generalitzats en el BIP70 és altament recomanable que qualsevol instrucció comerciant per canviar carteres sigui ignorada.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Si estàs rebent aquest error, hauries de demanar al comerciant que et doni una URI compatible amb el BIP21.</translation>
</message>
<message>
<source>Invalid payment address %1</source>
<translation>Adreça de pagament no vàlida %1</translation>
@@ -1418,10 +1563,34 @@
<source>%1 ms</source>
<translation>%1 ms</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation><numerusform>Un segon</numerusform><numerusform>%n segons</numerusform></translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation><numerusform>Un minut</numerusform><numerusform>%n minuts</numerusform></translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation><numerusform>Una hora</numerusform><numerusform>%n hores</numerusform></translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation><numerusform>Un dia</numerusform><numerusform>%n dies</numerusform></translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation><numerusform>Una setmana</numerusform><numerusform>%n setmanes</numerusform></translation>
</message>
<message>
<source>%1 and %2</source>
<translation>%1 i %2</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation><numerusform>Un any</numerusform><numerusform>%n anys</numerusform></translation>
</message>
<message>
<source>%1 B</source>
<translation>%1 B</translation>
@@ -1477,6 +1646,10 @@
<source>Error encoding URI into QR Code.</source>
<translation>Error en codificar l'URI en un codi QR.</translation>
</message>
<message>
<source>QR code support not available.</source>
<translation>Suport de codi QR no disponible.</translation>
</message>
<message>
<source>Save QR Code</source>
<translation>Desa el codi QR</translation>
@@ -1512,10 +1685,18 @@
<source>Datadir</source>
<translation>Datadir</translation>
</message>
<message>
<source>To specify a non-default location of the data directory use the '%1' option.</source>
<translation>Per tal d'especificar una ubicació que no és per defecte del directori de dades utilitza la '%1' opció.</translation>
</message>
<message>
<source>Blocksdir</source>
<translation>Directori de blocs</translation>
</message>
<message>
<source>To specify a non-default location of the blocks directory use the '%1' option.</source>
<translation>Per tal d'especificar una ubicació que no és per defecte del directori de blocs utilitza la '%1' opció.</translation>
</message>
<message>
<source>Startup time</source>
<translation>&amp;Temps d'inici</translation>
@@ -1608,10 +1789,22 @@
<source>Synced Blocks</source>
<translation>Blocs sincronitzats</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>El sistema autònom de mapat utilitzat per diversificar la selecció entre iguals.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapat com</translation>
</message>
<message>
<source>User Agent</source>
<translation>Agent d'usuari</translation>
</message>
<message>
<source>Node window</source>
<translation>Finestra node</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Obre el fitxer de registre de depuració %1 del directori de dades actual. Això pot trigar uns segons en fitxers de registre grans.</translation>
@@ -1823,6 +2016,18 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Un import opcional per sol·licitar. Deixeu-ho en blanc o zero per no sol·licitar cap import específic.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Una etiqueta opcional per associar-se a la nova adreça de recepció (usada per vostè per identificar una factura). També sadjunta a la sol·licitud de pagament.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Un missatge opcional adjunt a la sol·licitud de pagament i que es pot mostrar al remitent.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Creeu una nova adreça de recepció</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Neteja tots els camps del formulari.</translation>
@@ -2072,6 +2277,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Dust:</source>
<translation>Polsim:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Amagueu la configuració de les tarifes de transacció</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Quan no hi ha prou espai en els blocs per encabir totes les transaccions, els miners i així mateix els nodes repetidors poden exigir una taxa mínima. És acceptable pagar únicament la taxa mínima, però tingueu present que pot resultar que la vostra transacció no sigui mai confirmada mentre hi hagi més demanda de transaccions bitcoin de les que la xarxa pot processar.</translation>
</message>
<message>
<source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
<translation>Una taxa massa baixa pot resultar en una transacció que no es confirmi mai (llegiu el consell)</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation>Temps de confirmació objectiu:</translation>
@@ -2132,14 +2349,30 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 blocs)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Creació sense firmar</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Crea una transacció bitcoin parcialment signada (PSBT) per a utilitzar, per exemple, amb una cartera %1 fora de línia o amb una cartera compatible amb PSBT.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>de la cartera "%1"</translation>
</message>
<message>
<source>%1 to '%2'</source>
<translation>%1 a '%2'</translation>
</message>
<message>
<source>%1 to %2</source>
<translation>%1 a %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Voleu redactar aquesta transacció?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Esteu segur que ho voleu enviar?</translation>
@@ -2168,6 +2401,18 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Confirm send coins</source>
<translation>Confirma l'enviament de monedes</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Copiar PSBT al porta-retalls.</translation>
</message>
<message>
<source>Send</source>
<translation>Enviar</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT copiada</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>L'adreça del destinatari no és vàlida. Torneu-la a comprovar.</translation>
@@ -2944,6 +3189,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Confirm fee bump</source>
<translation>Confirmeu el recàrrec de tarifes</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT copiada</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>No es pot signar la transacció.</translation>
@@ -3374,6 +3623,10 @@ Nota: Com que la comissió es calcula en funció dels bytes, una comissió de "1
<source>Insufficient funds</source>
<translation>Balanç insuficient</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>Avís: Claus privades detectades en la cartera {%s} amb claus privades deshabilitades</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>No es pot escriure en el directori de dades "%s". Reviseu-ne els permisos.</translation>

View File

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

View File

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

View File

@@ -658,7 +658,7 @@
</message>
<message>
<source>Dust:</source>
<translation>"Dust":</translation>
<translation>"Staub":</translation>
</message>
<message>
<source>After Fee:</source>
@@ -808,7 +808,7 @@
</message>
<message>
<source>Wallet Name</source>
<translation>Wallet Name</translation>
<translation>Wallet-Name</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
@@ -1067,7 +1067,7 @@
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 synchronisiert gerade. Es lädt Header und Blöcke von anderen Nodes und validiert sie bis zum Erreichen der Spitze der Blockkette.</translation>
<translation>%1 synchronisiert gerade. Es lädt Header und Blöcke von Gegenstellen und validiert sie bis zum Erreichen der Spitze der Blockkette.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
@@ -1097,7 +1097,7 @@
</message>
<message>
<source>default wallet</source>
<translation>Standard Wallet</translation>
<translation>Standard-Wallet</translation>
</message>
<message>
<source>Opening Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
@@ -1124,7 +1124,7 @@
</message>
<message>
<source>Size of &amp;database cache</source>
<translation>Größe des &amp;Datenbankcaches</translation>
<translation>Größe des &amp;Datenbankpufferspeichers</translation>
</message>
<message>
<source>Number of script &amp;verification threads</source>
@@ -1758,7 +1758,7 @@
</message>
<message>
<source>Banned peers</source>
<translation>Gesperrte Peers</translation>
<translation>Gesperrte Gegenstellen</translation>
</message>
<message>
<source>Select a peer to view detailed information.</source>
@@ -1788,6 +1788,14 @@
<source>Synced Blocks</source>
<translation>Synchronisierte Blöcke</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Das zugeordnete autonome System zur Diversifizierung der Gegenstellen-Auswahl.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Zugeordnetes AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>User-Agent</translation>
@@ -2266,7 +2274,7 @@ Hinweis: Eine Gebühr von "100 Satoshis pro kB" bei einer Größe der Transaktio
</message>
<message>
<source>Dust:</source>
<translation>"Dust":</translation>
<translation>"Staub":</translation>
</message>
<message>
<source>Hide transaction fee settings</source>

View File

@@ -1773,6 +1773,14 @@
<source>Synced Blocks</source>
<translation>Συγχρονισμένα Μπλοκς</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Το χαρτογραφημένο Αυτόνομο Σύστημα που χρησιμοποιείται για τη διαφοροποίηση της επιλογής ομοτίμων.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Χαρτογραφημένο ως</translation>
</message>
<message>
<source>User Agent</source>
<translation>Agent χρήστη</translation>

View File

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

View File

@@ -395,7 +395,7 @@
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
<translation>Cifrar las claves privadas de su monedero</translation>
<translation>Encriptar las claves privadas que pertenecen a su billetera</translation>
</message>
<message>
<source>Sign messages with your Bitcoin addresses to prove you own them</source>
@@ -471,7 +471,7 @@
</message>
<message>
<source>Warning</source>
<translation>Aviso</translation>
<translation>Advertencia</translation>
</message>
<message>
<source>Information</source>
@@ -519,7 +519,7 @@
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Muestre el mensaje de ayuda %1 para obtener una lista con posibles opciones de línea de comandos de Bitcoin</translation>
<translation>Muestra el mensaje de ayuda %1 para obtener una lista con posibles opciones de línea de comandos de Bitcoin.</translation>
</message>
<message>
<source>default wallet</source>
@@ -812,7 +812,7 @@
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Encriptar monedero. El monedero será cifrado con la contraseña que elija.</translation>
<translation>Cifrar monedero. El monedero será cifrado con la contraseña que elija.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
@@ -1093,7 +1093,7 @@
</message>
<message>
<source>Open wallet warning</source>
<translation>Advertencia sobre apertura de monedero</translation>
<translation>Aviso de apertura de monedero</translation>
</message>
<message>
<source>default wallet</source>
@@ -1114,6 +1114,10 @@
<source>&amp;Main</source>
<translation>&amp;Principal</translation>
</message>
<message>
<source>Automatically start %1 after logging in to the system.</source>
<translation>Iniciar automaticamente %1 al encender el sistema.</translation>
</message>
<message>
<source>&amp;Start %1 on system login</source>
<translation>&amp; Comience %1 en el inicio de sesión del sistema</translation>
@@ -1164,7 +1168,7 @@
</message>
<message>
<source>Reset all client options to default.</source>
<translation>Restablecer todas las opciones del cliente a las predeterminadas.</translation>
<translation>Restablecer todas las opciones predeterminadas del cliente.</translation>
</message>
<message>
<source>&amp;Reset Options</source>
@@ -1220,7 +1224,7 @@
</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>Abrir automáticamente el puerto del cliente Bitcoin en el router. Esta opción solo funciona si el router admite UPnP y está activado.</translation>
<translation>Abrir automáticamente el puerto del cliente Bitcoin en el router. Esta opción solo funciona cuando el router admite UPnP y está activado.</translation>
</message>
<message>
<source>Map port using &amp;UPnP</source>
@@ -1236,7 +1240,7 @@
</message>
<message>
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
<translation>Conéctese a la red de Bitcoin a través de un proxy SOCKS5.</translation>
<translation>Conectar a la red de Bitcoin a través de un proxy SOCKS5.</translation>
</message>
<message>
<source>&amp;Connect through SOCKS5 proxy (default proxy):</source>
@@ -1280,7 +1284,7 @@
</message>
<message>
<source>Show only a tray icon after minimizing the window.</source>
<translation>Minimizar la ventana a la bandeja de iconos del sistema.</translation>
<translation>Mostrar solo un icono de sistema después de minimizar la ventana</translation>
</message>
<message>
<source>&amp;Minimize to the tray instead of the taskbar</source>
@@ -1379,7 +1383,7 @@
<name>OverviewPage</name>
<message>
<source>Form</source>
<translation>Desde</translation>
<translation>Formulario</translation>
</message>
<message>
<source>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</source>
@@ -1395,7 +1399,7 @@
</message>
<message>
<source>Your current spendable balance</source>
<translation>Su balance actual gastable</translation>
<translation>Su saldo actual gastable</translation>
</message>
<message>
<source>Pending:</source>
@@ -1403,7 +1407,7 @@
</message>
<message>
<source>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</source>
<translation>Total de transacciones que deben ser confirmadas y que no cuentan aun con el balance gastable necesario.</translation>
<translation>Total de transacciones que deben ser confirmadas y que no cuentan con el saldo disponible necesario.</translation>
</message>
<message>
<source>Immature:</source>
@@ -1784,6 +1788,14 @@
<source>Synced Blocks</source>
<translation>Bloques sincronizados</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>El Sistema Autónomo mapeado utilizado para la selección diversificada de participantes.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>SA Mapeado</translation>
</message>
<message>
<source>User Agent</source>
<translation>Agente de usuario</translation>
@@ -2003,6 +2015,14 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Monto opcional a solicitar. Dejarlo vacío o en cero para no solicitar un monto específico.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Etiqueta opcional para asociar con la nueva dirección de recepción (utilizado por ti para identificar una factura). También esta asociado a la solicitud de pago.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Mensaje opcional asociado a la solicitud de pago que podría ser presentado al remitente </translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>Crear nueva dirección para recepción</translation>
@@ -2190,11 +2210,11 @@
</message>
<message>
<source>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</source>
<translation>Al activarse, si la dirección de cambio está vacía o es inválida, las monedas serán enviadas a una nueva dirección generada.</translation>
<translation>Si se activa, pero la dirección de cambio está vacía o es inválida, las monedas serán enviadas a una nueva dirección generada.</translation>
</message>
<message>
<source>Custom change address</source>
<translation>Dirección propia</translation>
<translation>Dirección de cambio personalizada.</translation>
</message>
<message>
<source>Transaction Fee:</source>
@@ -2256,6 +2276,10 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Dust:</source>
<translation>Polvo:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Esconder ajustes de tarifas de transacción</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>Cuando hay menos volumen de transacciones que espacio en los bloques, los mineros y los nodos de retransmisión pueden imponer una comisión mínima. Pagar solo esta comisión mínima está bien, pero tenga en cuenta que esto puede resultar en una transacción nunca confirmada una vez que haya más demanda de transacciones de Bitcoin de la que la red puede procesar.</translation>
@@ -2330,7 +2354,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source> from wallet '%1'</source>
<translation>de monedero %1</translation>
<translation>desde el monedero %1</translation>
</message>
<message>
<source>%1 to '%2'</source>
@@ -2340,6 +2364,10 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>%1 to %2</source>
<translation>%1 a %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>¿Desea preparar esta transacción?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>¿Seguro que quiere enviar?</translation>
@@ -2376,10 +2404,26 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Confirm send coins</source>
<translation>Confirmar el envío de monedas</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Confirme la propuesta de transaccion</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Copiar la TBPF al portapapeles</translation>
</message>
<message>
<source>Send</source>
<translation>Enviar</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>TBPF copiada</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Visualización unicamente balance:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>La dirección de envío no es válida. Por favor, revísela.</translation>
@@ -2398,7 +2442,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Duplicate address found: addresses should only be used once each.</source>
<translation>Dirección duplicada encontrada: la dirección sólo debería ser utilizada una vez por cada uso.</translation>
<translation>Dirección duplicada encontrada: las direcciones sólo deberían ser utilizadas una vez.</translation>
</message>
<message>
<source>Transaction creation failed!</source>
@@ -2418,11 +2462,11 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Warning: Invalid Bitcoin address</source>
<translation>Peligro: Dirección de Bitcoin inválida</translation>
<translation>Advertencia: Dirección de Bitcoin inválida.</translation>
</message>
<message>
<source>Warning: Unknown change address</source>
<translation>Peligro: Dirección de cambio desconocida</translation>
<translation>Advertencia: Dirección de cambio desconocida.</translation>
</message>
<message>
<source>Confirm custom change address</source>
@@ -2430,7 +2474,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>The address you selected for change is not part of this wallet. Any or all funds in your wallet may be sent to this address. Are you sure?</source>
<translation>La dirección de cambio seleccionada no es parte de su monedero. Parte de sus fondos serán enviados a esta dirección. ¿Está seguro?</translation>
<translation>La dirección que ha seleccionado para el cambio no es parte de su monedero. Parte o todos sus fondos pueden ser enviados a esta dirección. ¿Está seguro?</translation>
</message>
<message>
<source>(no label)</source>
@@ -2475,9 +2519,13 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Remove this entry</source>
<translation>Eliminar esta entrada.</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>El monto a enviar en las unidades seleccionadas</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>La comisión será deducida de la cantidad que sea enviada. El destinatario recibirá menos bitcoins que la cantidad introducida en el campo Cantidad. Si hay varios destinatarios seleccionados, la comisión será distribuida a partes iguales.</translation>
<translation>La comisión será deducida de la cantidad enviada. El destinatario recibirá menos bitcoins que la cantidad introducida en el campo Cantidad. Si hay varios destinatarios seleccionados, la comisión será distribuida a partes iguales.</translation>
</message>
<message>
<source>S&amp;ubtract fee from amount</source>
@@ -2509,7 +2557,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Pay To:</source>
<translation>Paga a:</translation>
<translation>Pagar a:</translation>
</message>
<message>
<source>Memo:</source>
@@ -2601,6 +2649,14 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>The Bitcoin address the message was signed with</source>
<translation>La dirección Bitcoin con la que se firmó el mensaje</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>El mensaje firmado para verificar</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>La firma proporcionada cuando el mensaje fue firmado</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Verificar el mensaje para comprobar que fue firmado con la dirección Bitcoin indicada</translation>
@@ -2633,6 +2689,10 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Wallet unlock was cancelled.</source>
<translation>El desbloqueo del monedero fue cancelado.</translation>
</message>
<message>
<source>No error</source>
<translation>Sin error </translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>La llave privada para la dirección introducida no está disponible.</translation>
@@ -2817,7 +2877,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours.</source>
<translation>Los bitcoins generados deben madurar %1 bloques antes de que puedan gastarse. Cuando generó este bloque, se transmitió a la red para que se añadiera a la cadena de bloques. Si no consigue entrar en la cadena, su estado cambiará a "no aceptado" y ya no se podrá gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque a pocos segundos del suyo.</translation>
<translation>Las monedas generadas deben madurar %1 bloques antes de que puedan gastarse. Cuando generó este bloque, fue retransmitido a la red para que se añadiera a la cadena de bloques. Si no consigue entrar en la cadena, su estado cambiará a "no aceptado" y ya no se podrá gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque a pocos segundos del suyo.</translation>
</message>
<message>
<source>Debug information</source>
@@ -2899,7 +2959,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Immature (%1 confirmations, will be available after %2)</source>
<translation>Inmaduro (%1 confirmación(es), Estarán disponibles después de %2)</translation>
<translation>Inmaduro (%1 confirmaciones, Estará disponible después de %2)</translation>
</message>
<message>
<source>Generated but not accepted</source>
@@ -3168,6 +3228,10 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Do you want to increase the fee?</source>
<translation>¿Desea incrementar la comisión?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>¿Desea preparar una transacción con aumento de comisión ?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>Comisión actual:</translation>
@@ -3184,6 +3248,14 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Confirm fee bump</source>
<translation>Confirmar incremento de comisión</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>No se pudo preparar la transacción.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>TBPF copiada</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>No se ha podido firmar la transacción.</translation>
@@ -3272,7 +3344,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation>No se puede bloquear el directorio %s. %s ya se está ejecutando.</translation>
<translation>No se puede bloquear el directorio %s. %s probablemente ya se está ejecutando.</translation>
</message>
<message>
<source>Cannot provide specific connections and have addrman find outgoing connections at the same.</source>
@@ -3300,7 +3372,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
<translation>Esta es la cuota de transacción que puede descartar si el cambio es más pequeño que el polvo a este nivel.</translation>
<translation>Esta es la comisión por transacción que puede descartar si el cambio es más pequeño que el polvo a este nivel.</translation>
</message>
<message>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
@@ -3332,7 +3404,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Cannot resolve -%s address: '%s'</source>
<translation>No se puede resolver -%s direccion: '%s'</translation>
<translation>No se puede resolver -%s dirección: '%s'</translation>
</message>
<message>
<source>Change index out of range</source>
@@ -3350,6 +3422,14 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
<source>Corrupted block database detected</source>
<translation>Corrupción de base de datos de bloques detectada.</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>No se pudo encontrar el archivo asmap %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>No se pudo analizar el archivo asmap %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>¿Quiere reconstruir la base de datos de bloques ahora?</translation>
@@ -3368,7 +3448,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation>Error cargando %s: Las claves privadas solo pueden ser deshabilitadas durante la creación</translation>
<translation>Error cargando %s: Las llaves privadas solo pueden ser deshabilitadas durante la creación.</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
@@ -3512,7 +3592,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation>Cantidad no válida para -maxtxfee=&lt;amount&gt;: '%s' (debe ser por lo menos la comisión mínima de %s para prevenir transacciones atascadas)</translation>
<translation>Cantidad no válida para -maxtxfee=&lt;amount&gt;: '%s' (debe ser al menos la comisión mínima de %s para prevenir transacciones atascadas)</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
@@ -3622,7 +3702,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Verifying wallet(s)...</source>
<translation>Verificando monedero...</translation>
<translation>Verificando monedero(s)...</translation>
</message>
<message>
<source>Warning: unknown new rules activated (versionbit %i)</source>
@@ -3666,7 +3746,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation>Esta es la tarifa mínima a pagar en cada transacción.</translation>
<translation>Esta es la comisión por transacción mínima a pagar en cada transacción.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
@@ -3686,7 +3766,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation>La red especificada en -onlynet '%s' es desconocida</translation>
<translation>Red desconocida especificada en -onlynet '%s'</translation>
</message>
<message>
<source>Insufficient funds</source>
@@ -3718,7 +3798,7 @@ Nota: Dado que la comisión se calcula por byte, una comisión de "100 satoshis
</message>
<message>
<source>Cannot downgrade wallet</source>
<translation>No se puede rebajar el monedero</translation>
<translation>No se puede actualizar a una versión mas antigua el monedero.</translation>
</message>
<message>
<source>Rescanning...</source>

View File

@@ -997,7 +997,7 @@ Exportar los datos en la pestaña actual a un archivo</translation>
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation>(0 = auto, &lt;0 = deja muchos núcleos gratis)</translation>
<translation>(0 = auto, &lt;0 = deja esta cantidad de núcleos libres)</translation>
</message>
<message>
<source>W&amp;allet</source>

View File

@@ -993,7 +993,7 @@
</message>
<message>
<source>(0 = auto, &lt;0 = leave that many cores free)</source>
<translation>(0 = auto, &lt;0 = deja muchos núcleos gratis)</translation>
<translation>(0 = auto, &lt;0 = deja esta cantidad de núcleos libres)</translation>
</message>
<message>
<source>W&amp;allet</source>

View File

@@ -357,6 +357,10 @@
<source>Reindexing blocks on disk...</source>
<translation>Blokeak diskoan berriro zerrendatzen...</translation>
</message>
<message>
<source>Send coins to a Bitcoin address</source>
<translation>Bidali txanponak Bitcoin helbide batera</translation>
</message>
<message>
<source>Change the passphrase used for wallet encryption</source>
<translation>Diruzorroa enkriptatzeko erabilitako pasahitza aldatu</translation>
@@ -381,6 +385,10 @@
<source>Show or hide the main Window</source>
<translation>Lehio nagusia erakutsi edo izkutatu</translation>
</message>
<message>
<source>Verify messages to ensure they were signed with specified Bitcoin addresses</source>
<translation>Egiaztatu mesua Bitcoin helbide espezifikoarekin erregistratu direla ziurtatzeko</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Artxiboa</translation>
@@ -405,10 +413,22 @@
<source>Error</source>
<translation>Akatsa</translation>
</message>
<message>
<source>Information</source>
<translation>Informazioa</translation>
</message>
<message>
<source>Up to date</source>
<translation>Eguneratua</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Helbideak bidaltzen</translation>
</message>
<message>
<source>&amp;Receiving addresses</source>
<translation>&amp;Helbideak jasotzen</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Diruzorroa zabaldu</translation>
@@ -425,10 +445,18 @@
<source>Close wallet</source>
<translation>Diruzorroa itxi</translation>
</message>
<message>
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>&amp;Lehioa</translation>
</message>
<message>
<source>Minimize</source>
<translation>Txikitu</translation>
</message>
<message>
<source>Zoom</source>
<translation>Gerturatu</translation>
@@ -701,6 +729,10 @@
<source>Open wallet warning</source>
<translation>Diruzorroa irekitzen abisua</translation>
</message>
<message>
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
@@ -1194,7 +1226,11 @@
<source>Send Coins</source>
<translation>Txanponak bidali</translation>
</message>
</context>
<message>
<source>default wallet</source>
<translation>Diruzorro lehenetsia</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

View File

@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Rahansiirtohistoria on ajan tasalla</translation>
</message>
<message>
<source>Node window</source>
<translation>Solmu ikkuna</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Avaa solmun diagnostiikka- ja vianmäärityskonsoli </translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Lähetysosoitteet</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;Vastaanotto-osoitteet</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Avaa bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Avaa lompakko</translation>
@@ -783,7 +795,11 @@
<source>Create wallet failed</source>
<translation>Lompakon luonti epäonnistui</translation>
</message>
</context>
<message>
<source>Create wallet warning</source>
<translation>Luo lompakkovaroitus</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
@@ -802,6 +818,10 @@
<source>Encrypt Wallet</source>
<translation>Salaa lompakko</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Poista tämän lompakon yksityiset avaimet käytöstä. Lompakot, joissa yksityiset avaimet on poistettu käytöstä, eivät sisällä yksityisiä avaimia, eikä niissä voi olla HD-juurisanoja tai tuotuja yksityisiä avaimia. Tämä on ihanteellinen katselulompakkoihin.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Poista yksityisavaimet käytöstä</translation>
@@ -1041,6 +1061,10 @@
<source>Hide</source>
<translation>Piilota</translation>
</message>
<message>
<source>Esc</source>
<translation>Poistu</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Tuntematon. Synkronoidaan tunnisteita (%1, %2%)...</translation>
@@ -1048,6 +1072,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Avaa bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1059,6 +1087,10 @@
<source>Open wallet failed</source>
<translation>Lompakon avaaminen epäonnistui</translation>
</message>
<message>
<source>Open wallet warning</source>
<translation>Avoimen lompakon varoitus</translation>
</message>
<message>
<source>default wallet</source>
<translation>oletuslompakko</translation>
@@ -1436,6 +1468,10 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' ei ole kelvollinen URI. Käytä 'bitcoin:' sen sijaan.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Maksupyyntöä ei voida käsitellä, koska BIP70: ei tueta.</translation>
</message>
<message>
<source>If you are receiving this error you should request the merchant provide a BIP21 compatible URI.</source>
<translation>Tämän virheen saadessasi tulee sinun pyytää kauppiaalta BIP21 -yhteensopivaa URI-osoitetta.</translation>
@@ -1744,10 +1780,22 @@
<source>Synced Blocks</source>
<translation>Synkronoidut lohkot</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Kartoitettu autonominen järjestelmä, jota käytetään monipuolistamaan solmuvalikoimaa</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Kartoitettu AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>Käyttöliittymä</translation>
</message>
<message>
<source>Node window</source>
<translation>Solmun näkymä</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Avaa %1 -debug-loki tämänhetkisestä data-hakemistosta. Tämä voi viedä muutaman sekunnin suurille lokitiedostoille.</translation>
@@ -1959,6 +2007,14 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Valinnainen pyyntömäärä. Jätä tyhjäksi tai nollaksi jos et pyydä tiettyä määrää.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Valinnainen viesti, joka on liitetty maksupyyntöön ja joka voidaan näyttää lähettäjälle.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation> &amp;Luo uusi vastaanotto-osoite</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
<translation>Tyhjennä lomakkeen kaikki kentät.</translation>
@@ -2208,6 +2264,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Dust:</source>
<translation>Tomu:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation> Piilota siirtomaksuasetukset</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation>Mikäli lohkoissa ei ole tilaa kaikille siirtotapahtumille, voi louhijat sekä välittävät solmut pakottaa vähimmäispalkkion. Tämän vähimmäispalkkion maksaminen on täysin OK, mutta huomaa, että se saattaa johtaa siihen, ettei siirto vahvistu koskaan, jos bitcoin-siirtoja on enemmän kuin mitä verkko pystyy käsittelemään.</translation>
@@ -2316,6 +2376,26 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Confirm send coins</source>
<translation>Vahvista kolikoiden lähetys</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Vahvista siirtoehdotus</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Kopioi PSBT leikepöydälle</translation>
</message>
<message>
<source>Send</source>
<translation>Lähetä</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT kopioitu</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Katselulompakon saldo:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Vastaanottajan osoite ei ole kelvollinen. Tarkista osoite.</translation>
@@ -2569,6 +2649,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Wallet unlock was cancelled.</source>
<translation>Lompakon avaaminen peruttiin.</translation>
</message>
<message>
<source>No error</source>
<translation>Ei virhettä</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Yksityistä avainta syötetylle osoitteelle ei ole saatavilla.</translation>
@@ -2739,6 +2823,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Transaction virtual size</source>
<translation>Tapahtuman näennäiskoko</translation>
</message>
<message>
<source> (Certificate was not verified)</source>
<translation> (Sertifikaattia ei vahvistettu)</translation>
</message>
<message>
<source>Merchant</source>
<translation>Kauppias</translation>
@@ -3108,6 +3196,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Confirm fee bump</source>
<translation>Vahvista palkkion korotus</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation> Siirtoa ei voida laatia.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT kopioitu</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Siirtoa ei voida allekirjoittaa.</translation>
@@ -3330,6 +3426,14 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Specified blocks directory "%s" does not exist.</source>
<translation>Määrättyä lohkohakemistoa "%s" ei ole olemassa.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation>Tuntematon osoitetyyppi '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation>Tuntematon vaihtorahatyyppi '%s'</translation>
</message>
<message>
<source>Upgrading txindex database</source>
<translation>Päivitetään txindex -tietokantaa</translation>
@@ -3550,7 +3654,7 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation>Tämä on lähetyksestä maksettava maksu jonka maksat</translation>
<translation>Tämä on se siirtomaksu, jonka maksat, mikäli lähetät siirron.</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
@@ -3576,6 +3680,10 @@ Huom: Koska siirtomaksu lasketaan tavujen mukaan, niin määrittelemällä 500 t
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation>Siirtomaksun arviointi epäonnistui. Odota muutama lohko tai käytä -fallbackfee -valintaa..</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation>Varoitus: lompakosta {%s} tunnistetut yksityiset avaimet, on poistettu käytöstä</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation>Hakemistoon '%s' ei voida kirjoittaa. Tarkista käyttöoikeudet.</translation>

View File

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

View File

@@ -179,6 +179,32 @@
<source>Wallet encrypted</source>
<translation>הארנק מוצפן</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation>הקש את הסיסמא בשביל הארנק.
השתמש בסיסמא הכוללת עשר או יותר תווים אקראים, או שמונה או יותר מילים
</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>הקש את הסיסמא הישנה והחדשה בשביל הארנק.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation>זכור שהצפנת הארנק לא יכולה להגן עליך לגמרי מגניבת המטבעות שלך על ידי תוכנה זדונית שנמצאת על המחשב שלך.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>הארנק הוא מוצפן</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>הארנק שלך עומד להיות מוצפן</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>הארנק שלך מוצפן כעת</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>חשוב! כל גיבוי קודם שעשית לארנק שלך יש להחליף עם קובץ הארנק המוצפן שזה עתה נוצר. מסיבות אבטחה, גיבויים קודמים של קובץ הארנק הלא-מוצפן יהפכו לחסרי שימוש ברגע שתתחיל להשתמש בארנק החדש המוצפן.</translation>
@@ -301,6 +327,14 @@
<source>Open &amp;URI...</source>
<translation>פתיחת &amp;כתובת משאב</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>צור ארנק...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>צור ארנק חדש</translation>
</message>
<message>
<source>Wallet:</source>
<translation>ארנק:</translation>
@@ -739,9 +773,21 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Create wallet failed</source>
<translation>יצירת הארנק נכשלה</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>אזהרה לגבי יצירת הארנק</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation>צור ארנק.</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>

View File

@@ -3,11 +3,11 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation> ि ि ि-ि </translation>
<translation> ि -ि </translation>
</message>
<message>
<source>Create a new address</source>
<translation> </translation>
<translation> </translation>
</message>
<message>
<source>&amp;New</source>
@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>ि ि ि !</translation>
<translation> ि ि </translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -23,15 +23,15 @@
</message>
<message>
<source>C&amp;lose</source>
<translation>&amp;</translation>
<translation>&amp; </translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation> ि </translation>
<translation> </translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation> ि !</translation>
<translation> ि </translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
@@ -43,47 +43,55 @@
</message>
<message>
<source>&amp;Delete</source>
<translation>&amp;ि !!</translation>
<translation>&amp;ि</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation>ि ि </translation>
<translation> ि </translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation>ि ि </translation>
<translation> ि </translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation>&amp;</translation>
</message>
<message>
<source>Sending addresses</source>
<translation> </translation>
<translation> </translation>
</message>
<message>
<source>Receiving addresses</source>
<translation> </translation>
<translation> ि </translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation> ि ि ि ि </translation>
<translation> ि ि ि </translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation> ि ि ि ि 'नया एड्रेस बनाएं' </translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;  </translation>
<translation>&amp; </translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation>िि िि </translation>
<translation> &amp; </translation>
</message>
<message>
<source>&amp;Edit</source>
<translation>&amp;ि  </translation>
<translation>&amp; </translation>
</message>
<message>
<source>Export Address List</source>
<translation>ि </translation>
<translation> ि </translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation> (* .csv)</translation>
<translation> (* .csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
@@ -91,22 +99,22 @@
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<translation> %1 ि पुन: प्रय </translation>
<translation> %1 ि पुन: प्रय </translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Address</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>(no label)</source>
<translation>( )</translation>
<translation>( )</translation>
</message>
</context>
<context>
@@ -117,15 +125,19 @@
</message>
<message>
<source>Enter passphrase</source>
<translation> / ि !</translation>
<translation> </translation>
</message>
<message>
<source>New passphrase</source>
<translation> / ि !</translation>
<translation> </translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation> / ि !</translation>
<translation> </translation>
</message>
<message>
<source>Show passphrase</source>
<translation> </translation>
</message>
<message>
<source>Encrypt wallet</source>

View File

@@ -813,7 +813,11 @@
<source>Make Blank Wallet</source>
<translation>Üres tárca készítése</translation>
</message>
</context>
<message>
<source>Create</source>
<translation>Létrehozás</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
@@ -2155,6 +2159,10 @@
<source>Dust:</source>
<translation>Por-határ:</translation>
</message>
<message>
<source>A too low fee might result in a never confirming transaction (read the tooltip)</source>
<translation>A túl alacsony illeték a tranzakció soha be nem teljesülését eredményezheti (olvassa el az elemleírást)</translation>
</message>
<message>
<source>Confirmation time target:</source>
<translation>Várható megerősítési idő:</translation>
@@ -2231,10 +2239,22 @@
<source>You can increase the fee later (signals Replace-By-Fee, BIP-125).</source>
<translation>Később növelheti a tranzakció díját (lásd Replace-By-Fee, BIP-125).</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<translation>Kérjük, hogy ellenőrizze le a tranzakcióját.</translation>
</message>
<message>
<source>Transaction fee</source>
<translation>Tranzakciós díj</translation>
</message>
<message>
<source>Total Amount</source>
<translation>Teljes összeg</translation>
</message>
<message>
<source>To review recipient list click "Show Details..."</source>
<translation>A címzett lista ellenőrzéséhez kattintson a "További részletek" gombra.</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation>Összeg küldésének megerősítése</translation>
@@ -3058,7 +3078,11 @@
<source>The wallet data was successfully saved to %1.</source>
<translation>A tárca adatai sikeresen elmentve %1.</translation>
</message>
</context>
<message>
<source>Cancel</source>
<translation>Bezárás</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>

View File

@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Terbaru</translation>
</message>
<message>
<source>Node window</source>
<translation>Jendela Node</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Buka konsol debug dan diagnosa node</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>Address &amp;Pengirim</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>Address &amp;Penerima</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Buka URI bitcoin:</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Buka Wallet</translation>
@@ -1049,6 +1061,10 @@
<source>Hide</source>
<translation>Sembunyikan</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 menyinkronkan. Program ini akan mengunduh header dan blok dari rekan dan memvalidasi sampai blok terbaru.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Tidak diketahui. Sinkronisasi Header (%1, %2%)...</translation>
@@ -1056,6 +1072,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Buka URI bitcoin:</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1448,6 +1468,10 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' bukanlah alamat URI yang valid. Silakan gunakan 'bitcoin:'.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Tidak dapat memproses pembayaran karena dukungan BIP70 tidak disertakan.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Berhubung kelemahan keamanan yang meluas di BIP70, sangat disarankan agar instruksi pedagang untuk mengganti dompet diabaikan.</translation>
@@ -1766,6 +1790,10 @@
</translation>
</message>
<message>
<source>Node window</source>
<translation>Jendela Node</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Buka file log debug %1 dari direktori data saat ini. Dapat memakan waktu beberapa detik untuk file log besar.</translation>
@@ -2342,6 +2370,14 @@ Catatan: Karena biaya dihitung berdasarkan per byte, biaya "100 satoshi per kB"
<source>Confirm send coins</source>
<translation>Konfirmasi pengiriman koin</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT disalin</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Saldo (hanya lihat):</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Alamat penerima tidak sesuai. Mohon periksa kembali.</translation>
@@ -2587,6 +2623,10 @@ Catatan: Karena biaya dihitung berdasarkan per byte, biaya "100 satoshi per kB"
<source>Wallet unlock was cancelled.</source>
<translation>Pembukaan kunci dompet dibatalkan.</translation>
</message>
<message>
<source>No error</source>
<translation>Tidak ada kesalahan</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Private key untuk alamat yang dimasukkan tidak tersedia.</translation>
@@ -2637,10 +2677,22 @@ Catatan: Karena biaya dihitung berdasarkan per byte, biaya "100 satoshi per kB"
<source>Open until %1</source>
<translation>Buka sampai %1</translation>
</message>
<message>
<source>conflicted with a transaction with %1 confirmations</source>
<translation>Konflik dengan sebuah transaksi dengan %1 konfirmasi</translation>
</message>
<message>
<source>0/unconfirmed, %1</source>
<translation>0/belum dikonfirmasi, %1</translation>
</message>
<message>
<source>in memory pool</source>
<translation>Dalam pool memory</translation>
</message>
<message>
<source>not in memory pool</source>
<translation>Tidak dalam pool memory</translation>
</message>
<message>
<source>%1/unconfirmed</source>
<translation>%1/belum dikonfirmasi</translation>
@@ -2946,6 +2998,10 @@ Catatan: Karena biaya dihitung berdasarkan per byte, biaya "100 satoshi per kB"
<source>New fee:</source>
<translation>Biaya baru:</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT disalin</translation>
</message>
<message>
<source>default wallet</source>
<translation>wallet default</translation>
@@ -3040,6 +3096,14 @@ Catatan: Karena biaya dihitung berdasarkan per byte, biaya "100 satoshi per kB"
<source>Zapping all transactions from wallet...</source>
<translation>Setiap transaksi dalam dompet sedang di-'Zap'...</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation>Transaksi mempunyai rantai mempool yang terlalu panjang</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation>Transaksi harus mempunyai paling tidak satu penerima</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation>Jaringan tidak diketahui yang ditentukan dalam -onlynet: '%s'</translation>

View File

@@ -1789,6 +1789,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
<source>Synced Blocks</source>
<translation>Blocchi sincronizzati</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Il Sistema Autonomo mappato utilizzato per diversificare la selezione dei peer.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>AS mappato</translation>
</message>
<message>
<source>User Agent</source>
<translation>User Agent</translation>

View File

@@ -67,7 +67,7 @@
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation> Bitcoin </translation>
<translation> Bitcoin </translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
@@ -91,7 +91,7 @@
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation> CSV (*.csv)</translation>
<translation>CSVファイル (*.csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
@@ -114,7 +114,7 @@
</message>
<message>
<source>(no label)</source>
<translation>()</translation>
<translation></translation>
</message>
</context>
<context>
@@ -133,7 +133,7 @@
</message>
<message>
<source>Repeat new passphrase</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Show passphrase</source>
@@ -169,7 +169,7 @@
</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>警告: もしもあなたのウォレット暗号化してパスフレーズを忘れてしまった&lt;b&gt; Bitcoin &lt;/b&gt;</translation>
<translation>警告: ウォレット暗号化後にパスフレーズを忘れてしまった場合&lt;b&gt; Bitcoin &lt;/b&gt;</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
@@ -206,7 +206,7 @@
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>重要: 今までに作成されたウォレット 使 使</translation>
<translation>重要: 今までに作成されたウォレットファイルのバックアップ使使</translation>
</message>
<message>
<source>Wallet encryption failed</source>
@@ -392,7 +392,7 @@
</message>
<message>
<source>Show or hide the main Window</source>
<translation> </translation>
<translation></translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
@@ -400,7 +400,7 @@
</message>
<message>
<source>Sign messages with your Bitcoin addresses to prove you own them</source>
<translation>Bitcoin </translation>
<translation>Bitcoin </translation>
</message>
<message>
<source>Verify messages to ensure they were signed with specified Bitcoin addresses</source>
@@ -424,7 +424,7 @@
</message>
<message>
<source>Request payments (generates QR codes and bitcoin: URIs)</source>
<translation> (QRコードと bitcoin: URIを生成する)&lt;</translation>
<translation>QRコードと bitcoin:で始まるURIを生成する</translation>
</message>
<message>
<source>Show the list of used sending addresses and labels</source>
@@ -482,6 +482,10 @@
<source>Up to date</source>
<translation></translation>
</message>
<message>
<source>Node window</source>
<translation></translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation></translation>
@@ -516,7 +520,7 @@
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>%1 使 XPChain </translation>
<translation>%1 使 Bitcoin </translation>
</message>
<message>
<source>default wallet</source>
@@ -528,7 +532,7 @@
</message>
<message>
<source>&amp;Window</source>
<translation> (&amp;W)</translation>
<translation> (&amp;W)</translation>
</message>
<message>
<source>Minimize</source>
@@ -731,7 +735,7 @@
</message>
<message>
<source>Copy fee</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Copy after fee</source>
@@ -767,11 +771,11 @@
</message>
<message>
<source>Can vary +/- %1 satoshi(s) per input.</source>
<translation> %1 satoshi </translation>
<translation> %1 satoshi </translation>
</message>
<message>
<source>(no label)</source>
<translation>()</translation>
<translation></translation>
</message>
<message>
<source>change from %1 (%2)</source>
@@ -779,7 +783,7 @@
</message>
<message>
<source>(change)</source>
<translation>()</translation>
<translation></translation>
</message>
</context>
<context>
@@ -895,7 +899,7 @@
<name>FreespaceChecker</name>
<message>
<source>A new data directory will be created.</source>
<translation> </translation>
<translation></translation>
</message>
<message>
<source>name</source>
@@ -926,7 +930,7 @@
</message>
<message>
<source>Command-line options</source>
<translation> </translation>
<translation></translation>
</message>
</context>
<context>
@@ -945,7 +949,7 @@
</message>
<message>
<source>When you click OK, %1 will begin to download and process the full %4 block chain (%2GB) starting with the earliest transactions in %3 when %4 initially launched.</source>
<translation>OKをクリックすると%1 %4 %3 %4 %2GB</translation>
<translation>OKをクリックすると%1 %4 %3 %4 %2GB</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain. It is faster to download the full chain first and prune it later. Disables some advanced features.</source>
@@ -961,11 +965,11 @@
</message>
<message>
<source>Use the default data directory</source>
<translation> 使</translation>
<translation>使</translation>
</message>
<message>
<source>Use a custom data directory:</source>
<translation> 使:</translation>
<translation>使:</translation>
</message>
<message>
<source>Bitcoin</source>
@@ -973,7 +977,7 @@
</message>
<message>
<source>Discard blocks after verification, except most recent %1 GB (prune)</source>
<translation>%1 GBを除いて ()</translation>
<translation>%1 GBを除</translation>
</message>
<message>
<source>At least %1 GB of data will be stored in this directory, and it will grow over time.</source>
@@ -1024,7 +1028,7 @@
</message>
<message>
<source>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</source>
<translation>まだ表示されていない取引が関係する Bitcoin 使用しようとすると、ネットワークから認証を受けられません。</translation>
<translation>まだ表示されていない取引が関係する Bitcoin 使用を試みた場合、ネットワークから認証を受けられません。</translation>
</message>
<message>
<source>Number of blocks left</source>
@@ -1044,7 +1048,7 @@
</message>
<message>
<source>Progress increase per hour</source>
<translation>一時間あたりの進捗増加</translation>
<translation>一時間の進捗増加</translation>
</message>
<message>
<source>calculating...</source>
@@ -1052,15 +1056,19 @@
</message>
<message>
<source>Estimated time left until synced</source>
<translation>同期完了までの推定残り時間</translation>
<translation>同期完了までの推定時間</translation>
</message>
<message>
<source>Hide</source>
<translation>隠す</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1は現在同期中です。ブロック チェーンの先端に到達するまで、ピアからヘッダーとブロックをダウンロードし検証します。</translation>
<translation>%1は現在同期中です。ブロックチェーンの先端に到達するまで、ピアからヘッダーとブロックをダウンロードし検証します。</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
@@ -1213,7 +1221,7 @@
</message>
<message>
<source>&amp;Spend unconfirmed change</source>
<translation>未検証のお釣りを使用する(&amp;S)</translation>
<translation>未承認のお釣りを使用する(&amp;S)</translation>
</message>
<message>
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
@@ -1781,10 +1789,22 @@
<source>Synced Blocks</source>
<translation></translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>使</translation>
</message>
<message>
<source>Mapped AS</source>
<translation></translation>
</message>
<message>
<source>User Agent</source>
<translation></translation>
</message>
<message>
<source>Node window</source>
<translation></translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation> %1 </translation>
@@ -2257,6 +2277,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Dust:</source>
<translation>:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation></translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation></translation>
@@ -2325,6 +2349,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 ブロック)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>未署名で作成</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>オフライン%1ウォレットまたはPSBTに対応したハードウェアウォレットと合わせて使用するためのPSBT(部分的に署名されたトランザクション)を作成します。</translation>
@@ -2341,10 +2369,18 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%1 to %2</source>
<translation>%1 送金先: %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>このトランザクションのひな形を作成しますか?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>送金してもよろしいですか?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>トランザクション提案を確認してください。これにより、部分的に署名されたビットコイン・トランザクションPSBTが作成されます。これをコピーして例えばオフラインの %1 ウォレットやPSBTを扱えるハードウェアウォレットで残りの署名が出来ます。</translation>
</message>
<message>
<source>or</source>
<translation>または</translation>
@@ -2377,14 +2413,26 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Confirm send coins</source>
<translation>送金の確認</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>トランザクション提案を承認する</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>PSBTをクリップボードにコピー</translation>
</message>
<message>
<source>Send</source>
<translation>送金</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBTがコピーされました</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>監視限定残高</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>送金先アドレスが不正です。再確認してください。</translation>
@@ -2480,6 +2528,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Remove this entry</source>
<translation>この項目を削除</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>送金する金額の単位を選択</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>手数料は送金する金額から差し引かれます。送金先には金額欄で指定した額よりも少ない Bitcoin が送られます。送金先が複数ある場合は、手数料は均等に分けられます。</translation>
@@ -3185,6 +3237,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Do you want to increase the fee?</source>
<translation>手数料を上乗せしてもよろしいですか?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>このトランザクションに手数料を上乗せしたひな形を作成しますか?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>現在の手数料:</translation>
@@ -3201,6 +3257,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Confirm fee bump</source>
<translation>手数料上乗せの確認</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation></translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBTがコピーされました</translation>

View File

@@ -187,6 +187,22 @@
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation> .</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation> .</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation> </translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation> .</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation> .</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>중요: 본인 . , .</translation>
@@ -309,6 +325,14 @@
<source>Open &amp;URI...</source>
<translation>&amp;URI ...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation> ...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation> </translation>
</message>
<message>
<source>Wallet:</source>
<translation>:</translation>
@@ -457,6 +481,14 @@
<source>Up to date</source>
<translation></translation>
</message>
<message>
<source>Node window</source>
<translation> </translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation> </translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation> (&amp;S)</translation>
@@ -525,6 +557,10 @@
<source>Error: %1</source>
<translation>: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation>: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -747,9 +783,37 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Creating Wallet &lt;b&gt;%1&lt;/b&gt;...</source>
<translation> &lt;b&gt;%1&lt;/b&gt; ...</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation> </translation>
</message>
<message>
<source>Create wallet warning</source>
<translation> </translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation> </translation>
</message>
<message>
<source>Wallet Name</source>
<translation> </translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation> </translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1656,6 +1720,10 @@
<source>User Agent</source>
<translation> </translation>
</message>
<message>
<source>Node window</source>
<translation> </translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>%1 . .</translation>

View File

@@ -66,6 +66,10 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation> ി ി ിി ി . ി ി ി ിി.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation> ിി ി. ി ി ിിി ' പുതിയ വിലാസം സൃഷ്ടിയ്ക്കുക ' .</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;ി </translation>
@@ -128,6 +132,10 @@
<source>Repeat new passphrase</source>
<translation>ി ി</translation>
</message>
<message>
<source>Show passphrase</source>
<translation> ി </translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation> ി </translation>
@@ -160,15 +168,173 @@
<source>Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt;LOSE ALL OF YOUR BITCOINS&lt;/b&gt;!</source>
<translation>ിിപ്പ്: ി ി ി, ി ിി !</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation> ി ി .</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>ി ി .</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Browse transaction history</source>
<translation> ി ിി</translation>
</message>
<message>
<source>Error</source>
<translation>ി </translation>
</message>
<message>
<source>Warning</source>
<translation>ിി </translation>
</message>
<message>
<source>Information</source>
<translation>ി </translation>
</message>
<message>
<source>Open Wallet</source>
<translation> </translation>
</message>
<message>
<source>Open a wallet</source>
<translation> </translation>
</message>
<message>
<source>Close Wallet...</source>
<translation> </translation>
</message>
<message>
<source>Close wallet</source>
<translation> </translation>
</message>
<message>
<source>default wallet</source>
<translation>ി </translation>
</message>
<message>
<source>No wallets available</source>
<translation> </translation>
</message>
<message>
<source>Minimize</source>
<translation> </translation>
</message>
<message>
<source>Zoom</source>
<translation> </translation>
</message>
<message>
<source>Main Window</source>
<translation> </translation>
</message>
<message>
<source>Connecting to peers...</source>
<translation> ി ...</translation>
</message>
<message>
<source>Error: %1</source>
<translation> : %1 </translation>
</message>
<message>
<source>Warning: %1</source>
<translation>ിി : %1 </translation>
</message>
<message>
<source>Date: %1
</source>
<translation>ി: %1
</translation>
</message>
<message>
<source>Amount: %1
</source>
<translation> : %1
</translation>
</message>
<message>
<source>Wallet: %1
</source>
<translation>: %1
</translation>
</message>
<message>
<source>Label: %1
</source>
<translation>ി : %1
</translation>
</message>
<message>
<source>Address: %1
</source>
<translation>ി : %1
</translation>
</message>
<message>
<source>Sent transaction</source>
<translation> </translation>
</message>
<message>
<source>Incoming transaction</source>
<translation> </translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Coin Selection</source>
<translation>ി ി </translation>
</message>
<message>
<source>Quantity:</source>
<translation>ിി / :</translation>
</message>
<message>
<source>Bytes:</source>
<translation>:</translation>
</message>
<message>
<source>Amount:</source>
<translation>:</translation>
</message>
<message>
<source>Fee:</source>
<translation> / ി :</translation>
</message>
<message>
<source>List mode</source>
<translation>ി </translation>
</message>
<message>
<source>Amount</source>
<translation> </translation>
</message>
<message>
<source>Received with label</source>
<translation>ി ി </translation>
</message>
<message>
<source>Received with address</source>
<translation>ിി ി </translation>
</message>
<message>
<source>Date</source>
<translation>ി </translation>
</message>
<message>
<source>Confirmations</source>
<translation>ി </translation>
</message>
<message>
<source>Confirmed</source>
<translation>ിി</translation>
</message>
<message>
<source>(no label)</source>
<translation>( )</translation>
@@ -179,33 +345,77 @@
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation> / ി ി :</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
<message>
<source>name</source>
<translation> / </translation>
</message>
</context>
<context>
<name>HelpMessageDialog</name>
</context>
<context>
<name>Intro</name>
<message>
<source>Error</source>
<translation>ി </translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
<source>Unknown...</source>
<translation> </translation>
</message>
<message>
<source>Progress</source>
<translation>ി</translation>
</message>
<message>
<source>calculating...</source>
<translation>ിിി</translation>
</message>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>default wallet</source>
<translation>ി </translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Error</source>
<translation>ി </translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>
<source>Available:</source>
<translation></translation>
</message>
<message>
<source>Spendable:</source>
<translation>ിിി / </translation>
</message>
<message>
<source>Recent transactions</source>
<translation> </translation>
</message>
</context>
<context>
<name>PaymentServer</name>
@@ -215,6 +425,14 @@
</context>
<context>
<name>QObject</name>
<message>
<source>Amount</source>
<translation> </translation>
</message>
<message>
<source>Error: %1</source>
<translation> : %1 </translation>
</message>
</context>
<context>
<name>QRImageWidget</name>
@@ -231,6 +449,10 @@
<source>Address</source>
<translation>ി</translation>
</message>
<message>
<source>Amount</source>
<translation> </translation>
</message>
<message>
<source>Label</source>
<translation></translation>
@@ -238,6 +460,10 @@
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Date</source>
<translation>ി </translation>
</message>
<message>
<source>Label</source>
<translation></translation>
@@ -249,6 +475,26 @@
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>Quantity:</source>
<translation>ിി / :</translation>
</message>
<message>
<source>Bytes:</source>
<translation>:</translation>
</message>
<message>
<source>Amount:</source>
<translation>:</translation>
</message>
<message>
<source>Fee:</source>
<translation> / ി :</translation>
</message>
<message>
<source>Payment request expired.</source>
<translation>ി ിി. </translation>
</message>
<message>
<source>(no label)</source>
<translation>( )</translation>
@@ -268,12 +514,24 @@
</context>
<context>
<name>TransactionDesc</name>
<message>
<source>Date</source>
<translation>ി </translation>
</message>
<message>
<source>Amount</source>
<translation> </translation>
</message>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Date</source>
<translation>ി </translation>
</message>
<message>
<source>Label</source>
<translation></translation>
@@ -289,6 +547,14 @@
<source>Comma separated file (*.csv)</source>
<translation> ിി (* .csv)</translation>
</message>
<message>
<source>Confirmed</source>
<translation>ിി</translation>
</message>
<message>
<source>Date</source>
<translation>ി </translation>
</message>
<message>
<source>Label</source>
<translation></translation>
@@ -307,13 +573,21 @@
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation> </translation>
</message>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
</context>
<message>
<source>default wallet</source>
<translation>ി </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>

View File

@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Aktualny</translation>
</message>
<message>
<source>Node window</source>
<translation>Okno węzła</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Otwórz konsolę diagnostyczną i debugowanie węzłów</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Adresy wysyłania</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;Adresy odbioru</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Otwórz URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Otwórz Portfel</translation>
@@ -1049,6 +1061,14 @@
<source>Hide</source>
<translation>Ukryj</translation>
</message>
<message>
<source>Esc</source>
<translation>Wyjdź</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 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>Nieznane. Synchronizowanie nagłówków (%1, %2%)...</translation>
@@ -1056,6 +1076,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Otwórz URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1448,6 +1472,10 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' nie jest poprawnym URI. Użyj 'bitcoin:'.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Nie można przetworzyć żądania zapłaty z powodu braku wsparcia BIP70.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Z powodu znanych błędów bezpieczeństwa w BIP70 zaleca się ignorować wszelkie polecenie od sprzedawcy dotyczące zmiany portfela.</translation>
@@ -1760,10 +1788,22 @@
<source>Synced Blocks</source>
<translation>Zsynchronizowane bloki</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Zmapowany autonomiczny system (ang. asmap) używany do dywersyfikacji wyboru węzłów.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Zmapowany autonomiczny system (ang. asmap)</translation>
</message>
<message>
<source>User Agent</source>
<translation>Aplikacja kliencka</translation>
</message>
<message>
<source>Node window</source>
<translation>Okno węzła</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Otwórz plik dziennika debugowania %1 z obecnego katalogu z danymi. Może to potrwać kilka sekund przy większych plikach.</translation>
@@ -1975,6 +2015,14 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Opcjonalna kwota by zażądać. Zostaw puste lub zero by nie zażądać konkretnej kwoty.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Dodatkowa etykieta powiązana z nowym adresem do odbierania płatności (używanym w celu odnalezienia faktury). Jest również powiązana z żądaniem płatności.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Dodatkowa wiadomość dołączana do żądania zapłaty, która może być odczytana przez płacącego.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Stwórz nowy adres odbiorczy</translation>
@@ -2229,6 +2277,10 @@ Uwaga: Ponieważ opłata jest naliczana za każdy bajt, opłata "100 satoshi za
<source>Dust:</source>
<translation>Pył:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Ukryj ustawienia opłat transakcyjnych</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>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>
@@ -2297,6 +2349,14 @@ Uwaga: Ponieważ opłata jest naliczana za każdy bajt, opłata "100 satoshi za
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 bloków)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>&amp;Utwórz niepodpisaną transakcję</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Tworzy częściowo podpisaną transakcję (ang. PSBT) używaną np. offline z portfelem %1 lub z innym portfelem zgodnym z PSBT.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>z portfela '%1'</translation>
@@ -2309,10 +2369,18 @@ Uwaga: Ponieważ opłata jest naliczana za każdy bajt, opłata "100 satoshi za
<source>%1 to %2</source>
<translation>%1 do %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Czy chcesz zapisać szkic tej transakcji?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Czy na pewno chcesz wysłać?</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>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>or</source>
<translation>lub</translation>
@@ -2345,6 +2413,26 @@ Uwaga: Ponieważ opłata jest naliczana za każdy bajt, opłata "100 satoshi za
<source>Confirm send coins</source>
<translation>Potwierdź wysyłanie monet</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Potwierdź propozycję transakcji</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Skopiuj PSBT do schowka</translation>
</message>
<message>
<source>Send</source>
<translation>Wyślij</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>Skopiowano PSBT</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Kwota na obserwowanych kontach:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Adres odbiorcy jest nieprawidłowy, proszę sprawić ponownie.</translation>
@@ -2440,6 +2528,10 @@ Uwaga: Ponieważ opłata jest naliczana za każdy bajt, opłata "100 satoshi za
<source>Remove this entry</source>
<translation>Usuń ten wpis</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>Kwota do wysłania w wybranej jednostce</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Opłata zostanie odjęta od kwoty wysyłane.Odbiorca otrzyma mniej niż bitcoins wpisz w polu kwoty. Jeśli wybrano kilku odbiorców, opłata jest podzielona równo.</translation>
@@ -2567,6 +2659,14 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<source>The Bitcoin address the message was signed with</source>
<translation>Adres Bitcoin, którym została podpisana wiadomość</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Podpisana wiadomość do weryfikacji</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>Sygnatura podawana przy podpisywaniu wiadomości</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Zweryfikuj wiadomość, aby upewnić się, że została podpisana odpowiednim adresem Bitcoin.</translation>
@@ -2599,6 +2699,10 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<source>Wallet unlock was cancelled.</source>
<translation>Odblokowanie portfela zostało anulowane.</translation>
</message>
<message>
<source>No error</source>
<translation>Brak błędów</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Klucz prywatny dla podanego adresu nie jest dostępny.</translation>
@@ -3134,6 +3238,10 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<source>Do you want to increase the fee?</source>
<translation>Czy chcesz zwiększyć prowizję?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Czy chcesz zapisać szkic transakcji ze zwiększoną opłatą transakcyjną?</translation>
</message>
<message>
<source>Current fee:</source>
<translation>Aktualna opłata:</translation>
@@ -3150,6 +3258,14 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<source>Confirm fee bump</source>
<translation>Potwierdź zwiększenie opłaty</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Nie można zapisać szkicu transakcji.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>Skopiowano PSBT</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Nie można podpisać transakcji.</translation>
@@ -3316,6 +3432,14 @@ Zwróć uwagę, że poprawnie zweryfikowana wiadomość potwierdza to, że nadaw
<source>Corrupted block database detected</source>
<translation>Wykryto uszkodzoną bazę bloków</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>Nie można odnaleźć pliku asmap %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>Nie można przetworzyć pliku asmap %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Czy chcesz teraz przebudować bazę bloków?</translation>

View File

@@ -1789,6 +1789,14 @@
<source>Synced Blocks</source>
<translation>Blocos Sincronizados</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>O sistema autonômo mapeado usado para diversificar a seleção de pares.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapeado como</translation>
</message>
<message>
<source>User Agent</source>
<translation>User Agent</translation>

View File

@@ -1788,6 +1788,14 @@
<source>Synced Blocks</source>
<translation>Blocos Sincronizados</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>O sistema autônomo delineado usado para a diversificação da seleção de pares.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapeado como</translation>
</message>
<message>
<source>User Agent</source>
<translation>User Agent</translation>

View File

@@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>Copiază adresa selectată în clipboard</translation>
<translation>Copiază adresa selectată curent în clipboard</translation>
</message>
<message>
<source>&amp;Copy</source>
@@ -27,7 +27,7 @@
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>Şterge adresa selectată din listă</translation>
<translation>Şterge adresa selectată curent din listă</translation>
</message>
<message>
<source>Enter address or label to search</source>
@@ -131,6 +131,10 @@
<source>Repeat new passphrase</source>
<translation>Repetaţi noua frază de acces</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Arată fraza de acces</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Criptare portofel</translation>
@@ -171,6 +175,18 @@
<source>Wallet encrypted</source>
<translation>Portofel criptat</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation>Portofel de criptat</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Portofelul tău urmează fie criptat.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Protofelul tău este criptat.</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>IMPORTANT: Orice copie de siguranţă făcută anterior portofelului dumneavoastră ar trebui înlocuită cu cea generată cel mai recent, fişier criptat al portofelului. Pentru siguranţă, copiile de siguranţă vechi ale portofelului ne-criptat vor deveni inutile imediat ce veţi începe folosirea noului fişier criptat al portofelului.</translation>
@@ -293,6 +309,14 @@
<source>Open &amp;URI...</source>
<translation>Deschide &amp;URI...</translation>
</message>
<message>
<source>Create Wallet...</source>
<translation>Crează portofel...</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation>Crează un portofel nou</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Portofel:</translation>
@@ -441,6 +465,38 @@
<source>Up to date</source>
<translation>Actualizat</translation>
</message>
<message>
<source>Node window</source>
<translation>Fereastra nodului</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Deschide consola pentru depanare şi diagnosticare a nodului</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Adresele de destinatie</translation>
</message>
<message>
<source>&amp;Receiving addresses</source>
<translation>&amp;Adresele de primire</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Deschide portofel</translation>
</message>
<message>
<source>Open a wallet</source>
<translation>Deschide un portofel</translation>
</message>
<message>
<source>Close Wallet...</source>
<translation>Inchide portofel...</translation>
</message>
<message>
<source>Close wallet</source>
<translation>Inchide portofel</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation>Arată mesajul de ajutor %1 pentru a obţine o listă cu opţiunile posibile de linii de comandă Bitcoin</translation>
@@ -449,6 +505,10 @@
<source>default wallet</source>
<translation>portofel implicit</translation>
</message>
<message>
<source>No wallets available</source>
<translation>Niciun portofel disponibil</translation>
</message>
<message>
<source>&amp;Window</source>
<translation>&amp;Fereastră</translation>
@@ -457,6 +517,14 @@
<source>Minimize</source>
<translation>Minimizare</translation>
</message>
<message>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<source>Main Window</source>
<translation>Fereastra principală</translation>
</message>
<message>
<source>%1 client</source>
<translation>Client %1</translation>
@@ -473,6 +541,10 @@
<source>Error: %1</source>
<translation>Eroare: %1</translation>
</message>
<message>
<source>Warning: %1</source>
<translation> Atenționare: %1</translation>
</message>
<message>
<source>Date: %1
</source>
@@ -525,6 +597,10 @@
<source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
<translation>Generarea de chei HD este &lt;b&gt;dezactivata&lt;/b&gt;</translation>
</message>
<message>
<source>Private key &lt;b&gt;disabled&lt;/b&gt;</source>
<translation>Cheia privată &lt;b&gt;dezactivată&lt;/b&gt;</translation>
</message>
<message>
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;unlocked&lt;/b&gt;</source>
<translation>Portofelul este &lt;b&gt;criptat&lt;/b&gt; iar în momentul de faţă este &lt;b&gt;deblocat&lt;/b&gt;</translation>
@@ -691,9 +767,41 @@
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<message>
<source>Create wallet failed</source>
<translation>Crearea portofelului a eşuat</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation>Atentionare la crearea portofelului</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation>Crează portofel</translation>
</message>
<message>
<source>Wallet Name</source>
<translation>Numele portofelului</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation>Criptează portofelul. Portofelul va fi criptat cu fraza de acces aleasă.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation>Criptează portofelul.</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation>Dezactivează cheile private pentru acest portofel. Portofelele cu cheile private dezactivate nu vor avea chei private şi nu vor putea avea samanţă HD sau chei private importate. Ideal pentru portofele marcate doar pentru citire.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation>Dezactivează cheile private</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@@ -1572,6 +1680,10 @@
<source>User Agent</source>
<translation>Agent utilizator</translation>
</message>
<message>
<source>Node window</source>
<translation>Fereastra nodului</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Deschide fişierul jurnal depanare %1 din directorul curent. Aceasta poate dura cateva secunde pentru fişierele mai mari.</translation>
@@ -2874,6 +2986,10 @@ Nota: Cum taxa este calculata per byte, o taxa de "100 satoshi per kB" pentru o
</context>
<context>
<name>WalletController</name>
<message>
<source>Close wallet</source>
<translation>Inchide portofel</translation>
</message>
</context>
<context>
<name>WalletFrame</name>

View File

@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Готов</translation>
</message>
<message>
<source>Node window</source>
<translation>Окно узла</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Открыть консоль отладки и диагностики узла</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Адреса для отправлений</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;Адреса для получений</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Открыть биткойн: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Открыть Кошелёк</translation>
@@ -1049,6 +1061,14 @@
<source>Hide</source>
<translation>Спрятать</translation>
</message>
<message>
<source>Esc</source>
<translation>Выйти</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 синхронизировано. Заголовки и блоки будут скачиваться с узлов сети и проверяться до тех пока не будет достигнут конец цепи блоков.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Неизвестно. Синхронизация заголовков (%1, %2%)...</translation>
@@ -1056,6 +1076,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Открыть URI биткойна</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1448,6 +1472,10 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' не верный URI. Используйте 'bitcoin:' вместо этого.</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Невозможно обработать запрос платежа потому что BIP70 не поддерживается.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Из-за широко распространенных недостатков безопасности в BIP70 настоятельно рекомендуется игнорировать любые торговые инструкции по переключению кошельков.</translation>
@@ -1764,6 +1792,10 @@
<source>User Agent</source>
<translation>Пользовательский агент</translation>
</message>
<message>
<source>Node window</source>
<translation>Окно узла</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Открыть отладочный лог-файл %1 с текущего каталога данных. Для больших лог-файлов это может занять несколько секунд.</translation>
@@ -1975,6 +2007,14 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Необязательная сумма для запроса. Оставьте пустым или укажите ноль, чтобы запросить неопределённую сумму.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Необязательная метка, ассоциированная с новым адресом приёма (используется вами, чтобы идентифицировать выставленные счёт). Также она присоединяется к запросу платежа.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Необязательное сообщение, которое присоединяется к запросу платежа и может быть показано отправителю.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>&amp;Создать новый адрес для получения</translation>
@@ -2300,6 +2340,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 блоков)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Создать Без Подписи</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation>с кошелька '%1'</translation>
@@ -2312,6 +2356,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>%1 to %2</source>
<translation>С %1 на %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Вы хотите подготовить черновик транзакции?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Вы действительно хотите выполнить отправку?</translation>
@@ -2348,10 +2396,22 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Confirm send coins</source>
<translation>Подтвердить отправку монет</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Подтвердите предложенную транзакцию</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Копировать PSBT в буфер обмена</translation>
</message>
<message>
<source>Send</source>
<translation>Отправить</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT скопирована</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Адрес получателя неверный. Пожалуйста, перепроверьте.</translation>
@@ -2573,6 +2633,10 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>The Bitcoin address the message was signed with</source>
<translation>Биткойн-адрес, которым было подписано сообщение</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Подписанное сообщение для проверки</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Проверить сообщение, чтобы убедиться, что оно было подписано указанным Биткойн-адресом</translation>
@@ -3160,6 +3224,14 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
<source>Confirm fee bump</source>
<translation>Подтвердите оплату</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Невозможно подготовить черновик транзакции.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT скопирована</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Невозможно подписать транзакцию</translation>

View File

@@ -1,10 +1,38 @@
<TS language="si" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation> </translation>
</message>
<message>
<source>Create a new address</source>
<translation> </translation>
</message>
<message>
<source>&amp;New</source>
<translation></translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation> (clipboard) </translation>
</message>
<message>
<source>&amp;Copy</source>
<translation> </translation>
</message>
<message>
<source>C&amp;lose</source>
<translation> </translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation> </translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation> </translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation> </translation>
@@ -21,7 +49,23 @@
<source>Receiving addresses</source>
<translation> </translation>
</message>
</context>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation> . .</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation> . 'නව ලැබීමේ ලිපිනයක් සාදන්න' .</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation> (* .csv)</translation>
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<translation> %1 . .</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
@@ -39,12 +83,140 @@
</context>
<context>
<name>AskPassphraseDialog</name>
</context>
<message>
<source>Passphrase Dialog</source>
<translation> </translation>
</message>
<message>
<source>Enter passphrase</source>
<translation> </translation>
</message>
<message>
<source>New passphrase</source>
<translation> </translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation> </translation>
</message>
<message>
<source>Show passphrase</source>
<translation> </translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation> </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation> .</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation> </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation> .</translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation> </translation>
</message>
<message>
<source>Change passphrase</source>
<translation> </translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation> </translation>
</message>
<message>
<source>Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt;LOSE ALL OF YOUR BITCOINS&lt;/b&gt;!</source>
<translation>දයයි: ඔබ , &lt;b&gt; &lt;/b&gt;!</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation> ?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation> </translation>
</message>
<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> .&lt;br/&gt; &lt;b&gt; &lt;/b&gt;, &lt;b&gt; &lt;/b&gt; .</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation> .</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation> (malware) .</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation> </translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation> .</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation> .</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation>දගත්: ඔබග (backups) , (replace) . , , .</translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation> </translation>
</message>
<message>
<source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
<translation> . .</translation>
</message>
<message>
<source>The supplied passphrases do not match.</source>
<translation> .</translation>
</message>
<message>
<source>Wallet unlock failed</source>
<translation> </translation>
</message>
<message>
<source>The passphrase entered for the wallet decryption was incorrect.</source>
<translation> .</translation>
</message>
<message>
<source>Wallet decryption failed</source>
<translation> .</translation>
</message>
<message>
<source>Wallet passphrase was successfully changed.</source>
<translation> .</translation>
</message>
<message>
<source>Warning: The Caps Lock key is on!</source>
<translation>දයයි: !</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
<message>
<source>IP/Netmask</source>
<translation>IP/Netmask</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Browse transaction history</source>
<translation> </translation>
</message>
<message>
<source>Warning</source>
<translation></translation>
@@ -276,6 +448,10 @@
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file (*.csv)</source>
<translation> (* .csv)</translation>
</message>
<message>
<source>Date</source>
<translation></translation>

View File

@@ -481,6 +481,14 @@
<source>Up to date</source>
<translation>Aktualizovaný</translation>
</message>
<message>
<source>Node window</source>
<translation>Uzlové okno</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation>Otvor konzolu pre ladenie a diagnostiku uzlu</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation>&amp;Odosielajúce adresy</translation>
@@ -489,6 +497,10 @@
<source>&amp;Receiving addresses</source>
<translation>&amp;Prijímajúce adresy</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation>Otvoriť bitcoin: URI</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Otvoriť peňaženku</translation>
@@ -944,7 +956,7 @@
</message>
<message>
<source>This initial synchronisation is very demanding, and may expose hardware problems with your computer that had previously gone unnoticed. Each time you run %1, it will continue downloading where it left off.</source>
<translation>Prvá synchronizácia je veľmi náročná a môžu sa tak vďaka nej začat na Vašom počítači projavovať doteraz skryté hárdwarové problémy. Vždy, keď spustíte %1, bude sťahovanie pokračovať tam, kde skončilo.</translation>
<translation>Prvá synchronizácia je veľmi náročná a môžu sa tak vďaka nej začat na Vašom počítači prejavovať doteraz skryté hardwarové problémy. Vždy, keď spustíte %1, bude sťahovanie pokračovať tam, kde naposledy skončilo.</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>
@@ -1049,6 +1061,14 @@
<source>Hide</source>
<translation>Skryť</translation>
</message>
<message>
<source>Esc</source>
<translation>Esc - úniková klávesa</translation>
</message>
<message>
<source>%1 is currently syncing. It will download headers and blocks from peers and validate them until reaching the tip of the block chain.</source>
<translation>%1 sa práve synchronizuje. Sťahujú sa hlavičky a bloky od partnerov. Tie sa budú sa overovať až sa kompletne overí celý reťazec blokov - blockchain.</translation>
</message>
<message>
<source>Unknown. Syncing Headers (%1, %2%)...</source>
<translation>Neznámy. Synchronizujú sa hlavičky (%1, %2%)...</translation>
@@ -1056,6 +1076,10 @@
</context>
<context>
<name>OpenURIDialog</name>
<message>
<source>Open bitcoin URI</source>
<translation>Otvoriť bitcoin URI</translation>
</message>
<message>
<source>URI:</source>
<translation>URI:</translation>
@@ -1448,6 +1472,10 @@
<source>'bitcoin://' is not a valid URI. Use 'bitcoin:' instead.</source>
<translation>'bitcoin://' je neplatná URI. Použite 'bitcoin:'</translation>
</message>
<message>
<source>Cannot process payment request because BIP70 is not supported.</source>
<translation>Nemožno spracovať žiadosť o platbu, pretože podpora pre BIP70 nieje podporovaná.</translation>
</message>
<message>
<source>Due to widespread security flaws in BIP70 it's strongly recommended that any merchant instructions to switch wallets be ignored.</source>
<translation>Kvôli mnohým bezpečnostným chybám v BIP70 sa dôrazne odporúča ignorovať inštrukcie na prepínanie peňaženiek od akýchkoľvek obchodníkov.</translation>
@@ -1761,10 +1789,22 @@
<source>Synced Blocks</source>
<translation>Synchronizované bloky</translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation>Mapovaný nezávislý - Autonómny Systém používaný na rozšírenie vzájomného výberu partnerov.</translation>
</message>
<message>
<source>Mapped AS</source>
<translation>Mapovaný AS</translation>
</message>
<message>
<source>User Agent</source>
<translation>Aplikácia</translation>
</message>
<message>
<source>Node window</source>
<translation>Uzlové okno</translation>
</message>
<message>
<source>Open the %1 debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Otvoriť %1 ladiaci výpis z aktuálnej zložky. Pre veľké súbory to môže chvíľu trvať.</translation>
@@ -1976,9 +2016,17 @@
<source>An optional amount to request. Leave this empty or zero to not request a specific amount.</source>
<translation>Voliteľná požadovaná suma. Nechajte prázdne alebo nulu ak nepožadujete určitú sumu.</translation>
</message>
<message>
<source>An optional label to associate with the new receiving address (used by you to identify an invoice). It is also attached to the payment request.</source>
<translation>Voliteľný popis ktorý sa pridá k tejto novej prijímajúcej adrese (pre jednoduchšiu identifikáciu). Tento popis je taktiež pridaný do výzvy k platbe.</translation>
</message>
<message>
<source>An optional message that is attached to the payment request and may be displayed to the sender.</source>
<translation>Voliteľná správa ktorá bude pridaná k tejto platobnej výzve a môže byť zobrazená odosielateľovi.</translation>
</message>
<message>
<source>&amp;Create new receiving address</source>
<translation>Vytvoriť novú adresu pre prijímanie</translation>
<translation>&amp;Vytvoriť novú príjmaciu adresu</translation>
</message>
<message>
<source>Clear all fields of the form.</source>
@@ -2229,6 +2277,10 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>Dust:</source>
<translation>Prach:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation>Skryť nastavenie poplatkov transakcie</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>Ak je v blokoch menej objemu transakcií ako priestoru, ťažiari ako aj vysielacie uzly, môžu uplatniť minimálny poplatok. Platiť iba minimálny poplatok je v poriadku, ale uvedomte si, že to môže mať za následok transakciu, ktorá sa nikdy nepotvrdí, akonáhle je väčší dopyt po bitcoinových transakciách, než dokáže sieť spracovať.</translation>
@@ -2297,6 +2349,14 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>%1 (%2 blocks)</source>
<translation>%1 (%2 blokov)</translation>
</message>
<message>
<source>Cr&amp;eate Unsigned</source>
<translation>Vytvoriť bez podpisu</translation>
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>Vytvorí čiastočne podpísanú Bitcoin transakciu (Partially Signed Bitcoin Transaction - PSBT) na použitie napríklad s offline %1 peňaženkou alebo v hardvérovej peňaženke kompatibilnej s PSBT.</translation>
</message>
<message>
<source> from wallet '%1'</source>
<translation> z peňaženky '%1'</translation>
@@ -2309,6 +2369,10 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>%1 to %2</source>
<translation>%1 do %2</translation>
</message>
<message>
<source>Do you want to draft this transaction?</source>
<translation>Chcete naplánovať túto transakciu?</translation>
</message>
<message>
<source>Are you sure you want to send?</source>
<translation>Určite chcete odoslať transakciu?</translation>
@@ -2345,6 +2409,26 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>Confirm send coins</source>
<translation>Potvrďte odoslanie mincí</translation>
</message>
<message>
<source>Confirm transaction proposal</source>
<translation>Potvrdiť návrh transakcie</translation>
</message>
<message>
<source>Copy PSBT to clipboard</source>
<translation>Skopírovať PSBT do schránky</translation>
</message>
<message>
<source>Send</source>
<translation>Odoslať</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT skopírovaný</translation>
</message>
<message>
<source>Watch-only balance:</source>
<translation>Iba sledovaný zostatok:</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation>Adresa príjemcu je neplatná. Prosím, overte ju.</translation>
@@ -2440,6 +2524,10 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>Remove this entry</source>
<translation>Odstrániť túto položku</translation>
</message>
<message>
<source>The amount to send in the selected unit</source>
<translation>Suma na odoslanie vo vybranej mene</translation>
</message>
<message>
<source>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</source>
<translation>Poplatok sa odpočíta od čiastky, ktorú odosielate. Príjemca dostane menej bitcoinov ako zadáte. Ak je vybraných viacero príjemcov, poplatok je rozdelený rovným dielom.</translation>
@@ -2566,6 +2654,14 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>The Bitcoin address the message was signed with</source>
<translation>Adresa Bitcoin, ktorou bola podpísaná správa</translation>
</message>
<message>
<source>The signed message to verify</source>
<translation>Podpísaná správa na overenie</translation>
</message>
<message>
<source>The signature given when the message was signed</source>
<translation>Poskytnutý podpis pri podpísaní správy</translation>
</message>
<message>
<source>Verify the message to ensure it was signed with the specified Bitcoin address</source>
<translation>Overím správy sa uistiť že bola podpísaná označenou Bitcoin adresou</translation>
@@ -2598,6 +2694,10 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>Wallet unlock was cancelled.</source>
<translation>Odomknutie peňaženky bolo zrušené.</translation>
</message>
<message>
<source>No error</source>
<translation>Bez chyby</translation>
</message>
<message>
<source>Private key for the entered address is not available.</source>
<translation>Súkromný kľúč pre zadanú adresu nieje k dispozícii.</translation>
@@ -3131,7 +3231,11 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
</message>
<message>
<source>Do you want to increase the fee?</source>
<translation>Chceš poplatok navýšiť?</translation>
<translation>Chcete navýšiť poplatok?</translation>
</message>
<message>
<source>Do you want to draft a transaction with fee increase?</source>
<translation>Chcete naplánovať túto transakciu s navýšením poplatkov.</translation>
</message>
<message>
<source>Current fee:</source>
@@ -3149,6 +3253,14 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>Confirm fee bump</source>
<translation>Potvrď navýšenie poplatku</translation>
</message>
<message>
<source>Can't draft transaction.</source>
<translation>Nemožno naplánovať túto transakciu.</translation>
</message>
<message>
<source>PSBT copied</source>
<translation>PSBT skopírovaný</translation>
</message>
<message>
<source>Can't sign transaction.</source>
<translation>Nemôzeme podpíaať transakciu.</translation>
@@ -3315,6 +3427,14 @@ Poznámka: Keďže poplatok je počítaný za bajt, poplatok o hodnote "100 sato
<source>Corrupted block database detected</source>
<translation>Zistená poškodená databáza blokov</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation>Nepodarilo sa nájsť asmap súbor %s</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation>Nepodarilo sa analyzovať asmap súbor %s</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation>Chcete znovu zostaviť databázu blokov?</translation>

View File

@@ -1435,7 +1435,7 @@
</message>
<message>
<source>Spendable:</source>
<translation>Na voljo:</translation>
<translation>Na voljo za pošiljanje:</translation>
</message>
<message>
<source>Recent transactions</source>

File diff suppressed because it is too large Load Diff

View File

@@ -29,6 +29,10 @@
<source>Delete the currently selected address from the list</source>
<translation>Briše trenutno izabranu adresu sa liste</translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation>Unesite adresu ili oznaku za pretragu</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation>Izvoz podataka iz trenutne kartice u datoteku</translation>
@@ -65,6 +69,10 @@
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation>Ovo su Vaše Bitcoin adrese na koju se vrše uplate. Uvek proverite iznos i prijemnu adresu pre slanja novčića.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Ovo su vaše Bitcoin adrese za primanje isplete. Upotrebite dugme 'Kreiraj novu adresu prijema' na kartici za prijem da biste kreirali nove adrese.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation>&amp;Kopiraj Adresu</translation>
@@ -127,6 +135,10 @@
<source>Repeat new passphrase</source>
<translation>Ponovo unesite pristupnu frazu</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Prikaži lozinku</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Šifrujte novčanik</translation>
@@ -167,6 +179,22 @@
<source>Wallet encrypted</source>
<translation>Novčanik je šifrovan</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>Unesite lozinku u novčanik. &lt;br/&gt;Molimo, koristite lozinku koja ima &lt;b&gt; deset ili više nasumičnih znakova&lt;/b&gt;, ili &lt;b&gt;osam ili više reči&lt;/b&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation>Unesite u novčanik staru lozinku i novu lozinku.</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation>Novčanik će vam biti šifriran.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation>Vaš novčanik je sada šifrovan.</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>VAŽNO: Ranije rezervne kopije wallet datoteke trebate zameniti sa novo-kreiranom, enkriptovanom wallet datotekom. Iz sigurnosnih razloga, ranije ne-enkriptovane wallet datoteke će postati neupotrebljive čim počnete koristiti novi, enkriptovani novčanik.</translation>
@@ -289,6 +317,10 @@
<source>Open &amp;URI...</source>
<translation>Otvori &amp;URI...</translation>
</message>
<message>
<source>Wallet:</source>
<translation>Novčanik:</translation>
</message>
<message>
<source>Click to disable network activity.</source>
<translation>Odaberite za prekid aktivnosti na mreži.</translation>
@@ -385,6 +417,10 @@
<source>Information</source>
<translation>Informacije</translation>
</message>
<message>
<source>Open Wallet</source>
<translation>Otvori novčanik</translation>
</message>
<message>
<source>%1 client</source>
<translation>%1 klijent</translation>
@@ -456,6 +492,10 @@
</context>
<context>
<name>CreateWalletDialog</name>
<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>Onemogućite privatne ključeve za ovaj novčanik. Novčanici sa isključenim privatnim ključevima neće imati privatne ključeve i ne mogu imati HD seme ili uvezene privatne ključeve. Ovo je idealno za novčanike samo za gledanje.</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>

View File

@@ -1120,7 +1120,7 @@
</message>
<message>
<source>&amp;Start %1 on system login</source>
<translation>系统登入时启动 %1 (%S)</translation>
<translation>系统登入时启动 %1 (&amp;S)</translation>
</message>
<message>
<source>Size of &amp;database cache</source>
@@ -1788,6 +1788,14 @@
<source>Synced Blocks</source>
<translation></translation>
</message>
<message>
<source>The mapped Autonomous System used for diversifying peer selection.</source>
<translation></translation>
</message>
<message>
<source>Mapped AS</source>
<translation>AS</translation>
</message>
<message>
<source>User Agent</source>
<translation></translation>
@@ -2346,7 +2354,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
</message>
<message>
<source>Creates a Partially Signed Bitcoin Transaction (PSBT) for use with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<translation>创建一个“部分签名比特币交易”PSBT以用于像是离线%1钱包或是兼容PSBT的硬件钱包这用途。</translation>
<translation>创建一个“部分签名比特币交易”PSBT以用于诸如离线%1钱包或是兼容PSBT的硬件钱包这用途。</translation>
</message>
<message>
<source> from wallet '%1'</source>

291
src/qt/locale/bitcoin_zu.ts Normal file
View File

@@ -0,0 +1,291 @@
<TS language="zu" version="2.1">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation>Qhafaza kwesokudla ukuze uhlele ikheli noma ilebula</translation>
</message>
<message>
<source>Create a new address</source>
<translation>Dala ikheli elisha</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation>Kopisha ikheli elikhethwe njengamanje ebhodini lokunameka lesistimu</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation>Susa ikheli elikhethwe njengamanje ohlwini</translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation>Faka ikheli noma ilebula ukusesha</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation>Khiphela idatha kuthebhu yamanje kufayela</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation>Khetha ikheli ozothumela kulo izinhlamvu zemali</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation>Khetha ikheli ukuthola izinhlamvu zemali nge</translation>
</message>
<message>
<source>Sending addresses</source>
<translation>Kuthunyelwa amakheli</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation>Ukuthola amakheli</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>Lawa amakheli akho e-Bitcoin okuthumela izinkokhelo. Njalo hlola inani nekheli elitholwayo ngaphambi kokuthumela izinhlamvu zemali.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.</source>
<translation>Lawa amakheli akho e-Bitcoin athola izinkokhelo. Sebenzisa inkinobho ethi 'Dala ikheli elisha lokuthola' kuthebhu yokwamukela ukudala amakheli amasha.</translation>
</message>
<message>
<source>Export Address List</source>
<translation>Thumela Ikheli Langaphandle</translation>
</message>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Ifayela elihlukaniswe ngokhefana (* .csv)</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>Ukuthekelisa kwehlulekile</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation>Ilebuli</translation>
</message>
<message>
<source>Address</source>
<translation>Ikheli</translation>
</message>
<message>
<source>(no label)</source>
<translation>(akukho ilebula)</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation>I-Passphrase Dialog</translation>
</message>
<message>
<source>Enter passphrase</source>
<translation>Faka umushwana wokungena</translation>
</message>
<message>
<source>New passphrase</source>
<translation>Umushwana omusha wokungena</translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation>Phinda umushwana omusha wokungena</translation>
</message>
<message>
<source>Show passphrase</source>
<translation>Khombisa umushwana wokungena</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation>Bethela isikhwama</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation>Lokhu kusebenza kudinga umushwana wakho wokungena wesikhwama ukuvula isikhwama.</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation>Vula isikhwama semali</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
<translation>Lo msebenzi udinga umushwana wakho wokungena wesikhwama ukukhipha isikhwama esikhwameni.</translation>
</message>
<message>
<source>Decrypt wallet</source>
<translation>Ukhiphe isikhwama semali</translation>
</message>
<message>
<source>Change passphrase</source>
<translation>Shintsha umushwana wokungena</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation>Qinisekisa ukubethelwa kwe-wallet</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>Isexwayiso: Uma ubhala ngemfihlo isikhwama sakho futhi ulahlekelwe umushwana wakho wokungena, uzokwazi
Lahla YONKE IBITCOIN YAKHO!</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation>Uqinisekile ukuthi ufisa ukubhala ngemfihlo isikhwama sakho?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation>Kufakwe i-Wallet</translation>
</message>
</context>
<context>
<name>BanTableModel</name>
</context>
<context>
<name>BitcoinGUI</name>
</context>
<context>
<name>CoinControlDialog</name>
</context>
<context>
<name>CreateWalletActivity</name>
</context>
<context>
<name>CreateWalletDialog</name>
</context>
<context>
<name>EditAddressDialog</name>
</context>
<context>
<name>FreespaceChecker</name>
</context>
<context>
<name>HelpMessageDialog</name>
</context>
<context>
<name>Intro</name>
</context>
<context>
<name>ModalOverlay</name>
</context>
<context>
<name>OpenURIDialog</name>
</context>
<context>
<name>OpenWalletActivity</name>
</context>
<context>
<name>OptionsDialog</name>
</context>
<context>
<name>OverviewPage</name>
</context>
<context>
<name>PaymentServer</name>
</context>
<context>
<name>PeerTableModel</name>
</context>
<context>
<name>QObject</name>
</context>
<context>
<name>QRImageWidget</name>
</context>
<context>
<name>RPCConsole</name>
</context>
<context>
<name>ReceiveCoinsDialog</name>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Address</source>
<translation>Ikheli</translation>
</message>
<message>
<source>Label</source>
<translation>Ilebuli</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation>Ilebuli</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
</context>
<context>
<name>SendCoinsEntry</name>
</context>
<context>
<name>ShutdownWindow</name>
</context>
<context>
<name>SignVerifyMessageDialog</name>
</context>
<context>
<name>TrafficGraphWidget</name>
</context>
<context>
<name>TransactionDesc</name>
</context>
<context>
<name>TransactionDescDialog</name>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation>Ilebuli</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file (*.csv)</source>
<translation>Ifayela elihlukaniswe ngokhefana (* .csv)</translation>
</message>
<message>
<source>Label</source>
<translation>Ilebuli</translation>
</message>
<message>
<source>Address</source>
<translation>Ikheli</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation>Ukuthekelisa kwehlulekile</translation>
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
</context>
<context>
<name>WalletController</name>
</context>
<context>
<name>WalletFrame</name>
</context>
<context>
<name>WalletModel</name>
</context>
<context>
<name>WalletView</name>
<message>
<source>Export the data in the current tab to a file</source>
<translation>Khipha idatha kuthebhu yamanje kufayela</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
</context>
</TS>

View File

@@ -57,6 +57,7 @@ SendCoinsDialog::SendCoinsDialog(const PlatformStyle *_platformStyle, QWidget *p
ui(new Ui::SendCoinsDialog),
clientModel(nullptr),
model(nullptr),
m_coin_control(new CCoinControl),
fNewRecipientAllowed(true),
fFeeMinimized(true),
platformStyle(_platformStyle)
@@ -262,14 +263,9 @@ void SendCoinsDialog::on_sendButton_clicked()
WalletModelTransaction currentTransaction(recipients);
WalletModel::SendCoinsReturn prepareStatus;
// Always use a CCoinControl instance, use the CoinControlDialog instance if CoinControl has been enabled
CCoinControl ctrl;
if (model->getOptionsModel()->getCoinControlFeatures())
ctrl = *CoinControlDialog::coinControl();
updateCoinControlState(*m_coin_control);
updateCoinControlState(ctrl);
prepareStatus = model->prepareTransaction(currentTransaction, ctrl);
prepareStatus = model->prepareTransaction(currentTransaction, *m_coin_control);
// process prepareStatus and on error generate message shown to user
processSendCoinsReturn(prepareStatus,
@@ -413,7 +409,7 @@ void SendCoinsDialog::on_sendButton_clicked()
}
if (!send_failure) {
accept();
CoinControlDialog::coinControl()->UnSelectAll();
m_coin_control->UnSelectAll();
coinControlUpdateLabels();
}
fNewRecipientAllowed = true;
@@ -422,7 +418,7 @@ void SendCoinsDialog::on_sendButton_clicked()
void SendCoinsDialog::clear()
{
// Clear coin control settings
CoinControlDialog::coinControl()->UnSelectAll();
m_coin_control->UnSelectAll();
ui->checkBoxCoinControlChange->setChecked(false);
ui->lineEditCoinControlChange->clear();
coinControlUpdateLabels();
@@ -645,17 +641,11 @@ void SendCoinsDialog::on_buttonMinimizeFee_clicked()
void SendCoinsDialog::useAvailableBalance(SendCoinsEntry* entry)
{
// Get CCoinControl instance if CoinControl is enabled or create a new one.
CCoinControl coin_control;
if (model->getOptionsModel()->getCoinControlFeatures()) {
coin_control = *CoinControlDialog::coinControl();
}
// Include watch-only for wallets without private key
coin_control.fAllowWatchOnly = model->wallet().privateKeysDisabled();
m_coin_control->fAllowWatchOnly = model->wallet().privateKeysDisabled();
// Calculate available amount to send.
CAmount amount = model->wallet().getAvailableBalance(coin_control);
CAmount amount = model->wallet().getAvailableBalance(*m_coin_control);
for (int i = 0; i < ui->entries->count(); ++i) {
SendCoinsEntry* e = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget());
if (e && !e->isHidden() && e != entry) {
@@ -714,12 +704,11 @@ void SendCoinsDialog::updateSmartFeeLabel()
{
if(!model || !model->getOptionsModel())
return;
CCoinControl coin_control;
updateCoinControlState(coin_control);
coin_control.m_feerate.reset(); // Explicitly use only fee estimation rate for smart fee labels
updateCoinControlState(*m_coin_control);
m_coin_control->m_feerate.reset(); // Explicitly use only fee estimation rate for smart fee labels
int returned_target;
FeeReason reason;
CFeeRate feeRate = CFeeRate(model->wallet().getMinimumFee(1000, coin_control, &returned_target, &reason));
CFeeRate feeRate = CFeeRate(model->wallet().getMinimumFee(1000, *m_coin_control, &returned_target, &reason));
ui->labelSmartFee->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), feeRate.GetFeePerK()) + "/kB");
@@ -790,7 +779,7 @@ void SendCoinsDialog::coinControlFeatureChanged(bool checked)
ui->frameCoinControl->setVisible(checked);
if (!checked && model) // coin control features disabled
CoinControlDialog::coinControl()->SetNull();
m_coin_control->SetNull();
coinControlUpdateLabels();
}
@@ -798,8 +787,7 @@ void SendCoinsDialog::coinControlFeatureChanged(bool checked)
// Coin Control: button inputs -> show actual coin control dialog
void SendCoinsDialog::coinControlButtonClicked()
{
CoinControlDialog dlg(platformStyle);
dlg.setModel(model);
CoinControlDialog dlg(*m_coin_control, model, platformStyle);
dlg.exec();
coinControlUpdateLabels();
}
@@ -809,7 +797,7 @@ void SendCoinsDialog::coinControlChangeChecked(int state)
{
if (state == Qt::Unchecked)
{
CoinControlDialog::coinControl()->destChange = CNoDestination();
m_coin_control->destChange = CNoDestination();
ui->labelCoinControlChangeLabel->clear();
}
else
@@ -825,7 +813,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
if (model && model->getAddressTableModel())
{
// Default to no change address until verified
CoinControlDialog::coinControl()->destChange = CNoDestination();
m_coin_control->destChange = CNoDestination();
ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
const CTxDestination dest = DecodeDestination(text.toStdString());
@@ -848,7 +836,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
if(btnRetVal == QMessageBox::Yes)
CoinControlDialog::coinControl()->destChange = dest;
m_coin_control->destChange = dest;
else
{
ui->lineEditCoinControlChange->setText("");
@@ -867,7 +855,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
else
ui->labelCoinControlChangeLabel->setText(tr("(no label)"));
CoinControlDialog::coinControl()->destChange = dest;
m_coin_control->destChange = dest;
}
}
}
@@ -879,7 +867,7 @@ void SendCoinsDialog::coinControlUpdateLabels()
if (!model || !model->getOptionsModel())
return;
updateCoinControlState(*CoinControlDialog::coinControl());
updateCoinControlState(*m_coin_control);
// set pay amounts
CoinControlDialog::payAmounts.clear();
@@ -897,10 +885,10 @@ void SendCoinsDialog::coinControlUpdateLabels()
}
}
if (CoinControlDialog::coinControl()->HasSelected())
if (m_coin_control->HasSelected())
{
// actual coin control calculation
CoinControlDialog::updateLabels(model, this);
CoinControlDialog::updateLabels(*m_coin_control, model, this);
// show coin control stats
ui->labelCoinControlAutomaticallySelected->hide();

View File

@@ -12,6 +12,7 @@
#include <QString>
#include <QTimer>
class CCoinControl;
class ClientModel;
class PlatformStyle;
class SendCoinsEntry;
@@ -60,6 +61,7 @@ private:
Ui::SendCoinsDialog *ui;
ClientModel *clientModel;
WalletModel *model;
std::unique_ptr<CCoinControl> m_coin_control;
bool fNewRecipientAllowed;
bool fFeeMinimized;
const PlatformStyle *platformStyle;

View File

@@ -2243,8 +2243,7 @@ UniValue dumptxoutset(const JSONRPCRequest& request)
{
RPCHelpMan{
"dumptxoutset",
"\nWrite the serialized UTXO set to disk.\n"
"Incidentally flushes the latest coinsdb (leveldb) to disk.\n",
"\nWrite the serialized UTXO set to disk.\n",
{
{"path",
RPCArg::Type::STR,

View File

@@ -724,7 +724,7 @@ static UniValue getblocktemplate(const JSONRPCRequest& request)
return result;
}
class submitblock_StateCatcher : public CValidationInterface
class submitblock_StateCatcher final : public CValidationInterface
{
public:
uint256 hash;
@@ -792,17 +792,17 @@ static UniValue submitblock(const JSONRPCRequest& request)
}
bool new_block;
submitblock_StateCatcher sc(block.GetHash());
RegisterValidationInterface(&sc);
auto sc = std::make_shared<submitblock_StateCatcher>(block.GetHash());
RegisterSharedValidationInterface(sc);
bool accepted = ProcessNewBlock(Params(), blockptr, /* fForceProcessing */ true, /* fNewBlock */ &new_block);
UnregisterValidationInterface(&sc);
UnregisterSharedValidationInterface(sc);
if (!new_block && accepted) {
return "duplicate";
}
if (!sc.found) {
if (!sc->found) {
return "inconclusive";
}
return BIP22ValidationResult(sc.state);
return BIP22ValidationResult(sc->state);
}
static UniValue submitheader(const JSONRPCRequest& request)

View File

@@ -25,7 +25,8 @@ static std::string rpcWarmupStatus GUARDED_BY(cs_rpcWarmup) = "RPC server starte
/* Timer-creating functions */
static RPCTimerInterface* timerInterface = nullptr;
/* Map of name to timer. */
static std::map<std::string, std::unique_ptr<RPCTimerBase> > deadlineTimers;
static Mutex g_deadline_timers_mutex;
static std::map<std::string, std::unique_ptr<RPCTimerBase> > deadlineTimers GUARDED_BY(g_deadline_timers_mutex);
static bool ExecuteCommand(const CRPCCommand& command, const JSONRPCRequest& request, UniValue& result, bool last_handler);
struct RPCCommandExecutionInfo
@@ -298,7 +299,7 @@ void InterruptRPC()
void StopRPC()
{
LogPrint(BCLog::RPC, "Stopping RPC\n");
deadlineTimers.clear();
WITH_LOCK(g_deadline_timers_mutex, deadlineTimers.clear());
DeleteAuthCookie();
g_rpcSignals.Stopped();
}
@@ -486,6 +487,7 @@ void RPCRunLater(const std::string& name, std::function<void()> func, int64_t nS
{
if (!timerInterface)
throw JSONRPCError(RPC_INTERNAL_ERROR, "No timer handler registered for RPC");
LOCK(g_deadline_timers_mutex);
deadlineTimers.erase(name);
LogPrint(BCLog::RPC, "queue run of timer %s in %i seconds (using %s)\n", name, nSeconds, timerInterface->Name());
deadlineTimers.emplace(name, std::unique_ptr<RPCTimerBase>(timerInterface->NewTimer(func, nSeconds*1000)));

View File

@@ -19,16 +19,13 @@
#include <validationinterface.h>
#include <version.h>
#include <algorithm>
#include <atomic>
#include <cassert>
#include <chrono>
#include <cstdint>
#include <iosfwd>
#include <iostream>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
@@ -44,19 +41,6 @@ const std::string LIMIT_TO_MESSAGE_TYPE{TO_STRING(MESSAGE_TYPE)};
const std::string LIMIT_TO_MESSAGE_TYPE;
#endif
const std::map<std::string, std::set<std::string>> EXPECTED_DESERIALIZATION_EXCEPTIONS = {
{"CDataStream::read(): end of data: iostream error", {"addr", "block", "blocktxn", "cmpctblock", "feefilter", "filteradd", "filterload", "getblocks", "getblocktxn", "getdata", "getheaders", "headers", "inv", "notfound", "ping", "sendcmpct", "tx"}},
{"CompactSize exceeds limit of type: iostream error", {"cmpctblock"}},
{"differential value overflow: iostream error", {"getblocktxn"}},
{"index overflowed 16 bits: iostream error", {"getblocktxn"}},
{"index overflowed 16-bits: iostream error", {"cmpctblock"}},
{"indexes overflowed 16 bits: iostream error", {"getblocktxn"}},
{"non-canonical ReadCompactSize(): iostream error", {"addr", "block", "blocktxn", "cmpctblock", "filteradd", "filterload", "getblocks", "getblocktxn", "getdata", "getheaders", "headers", "inv", "notfound", "tx"}},
{"ReadCompactSize(): size too large: iostream error", {"addr", "block", "blocktxn", "cmpctblock", "filteradd", "filterload", "getblocks", "getblocktxn", "getdata", "getheaders", "headers", "inv", "notfound", "tx"}},
{"Superfluous witness record: iostream error", {"block", "blocktxn", "cmpctblock", "tx"}},
{"Unknown transaction optional data: iostream error", {"block", "blocktxn", "cmpctblock", "tx"}},
};
const RegTestingSetup* g_setup;
} // namespace
@@ -86,13 +70,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
g_setup->m_node.peer_logic->InitializeNode(&p2p_node);
try {
(void)ProcessMessage(&p2p_node, random_message_type, random_bytes_data_stream, GetTimeMillis(), Params(), *g_setup->m_node.mempool, g_setup->m_node.connman.get(), g_setup->m_node.banman.get(), std::atomic<bool>{false});
} catch (const std::ios_base::failure& e) {
const std::string exception_message{e.what()};
const auto p = EXPECTED_DESERIALIZATION_EXCEPTIONS.find(exception_message);
if (p == EXPECTED_DESERIALIZATION_EXCEPTIONS.cend() || p->second.count(random_message_type) == 0) {
std::cout << "Unexpected exception when processing message type \"" << random_message_type << "\": " << exception_message << std::endl;
assert(false);
}
} catch (const std::ios_base::failure&) {
}
SyncWithValidationInterfaceQueue();
}

View File

@@ -32,7 +32,7 @@ struct MinerTestingSetup : public RegTestingSetup {
BOOST_FIXTURE_TEST_SUITE(validation_block_tests, MinerTestingSetup)
struct TestSubscriber : public CValidationInterface {
struct TestSubscriber final : public CValidationInterface {
uint256 m_expected_tip;
explicit TestSubscriber(uint256 tip) : m_expected_tip(tip) {}
@@ -175,8 +175,8 @@ BOOST_AUTO_TEST_CASE(processnewblock_signals_ordering)
LOCK(cs_main);
initial_tip = ::ChainActive().Tip();
}
TestSubscriber sub(initial_tip->GetBlockHash());
RegisterValidationInterface(&sub);
auto sub = std::make_shared<TestSubscriber>(initial_tip->GetBlockHash());
RegisterSharedValidationInterface(sub);
// create a bunch of threads that repeatedly process a block generated above at random
// this will create parallelism and randomness inside validation - the ValidationInterface
@@ -208,10 +208,10 @@ BOOST_AUTO_TEST_CASE(processnewblock_signals_ordering)
UninterruptibleSleep(std::chrono::milliseconds{100});
}
UnregisterValidationInterface(&sub);
UnregisterSharedValidationInterface(sub);
LOCK(cs_main);
BOOST_CHECK_EQUAL(sub.m_expected_tip, ::ChainActive().Tip()->GetBlockHash());
BOOST_CHECK_EQUAL(sub->m_expected_tip, ::ChainActive().Tip()->GetBlockHash());
}
/**

View File

@@ -12,6 +12,40 @@
BOOST_FIXTURE_TEST_SUITE(validationinterface_tests, TestingSetup)
struct TestSubscriberNoop final : public CValidationInterface {
void BlockChecked(const CBlock&, const BlockValidationState&) override {}
};
BOOST_AUTO_TEST_CASE(unregister_validation_interface_race)
{
std::atomic<bool> generate{true};
// Start thread to generate notifications
std::thread gen{[&] {
const CBlock block_dummy;
BlockValidationState state_dummy;
while (generate) {
GetMainSignals().BlockChecked(block_dummy, state_dummy);
}
}};
// Start thread to consume notifications
std::thread sub{[&] {
// keep going for about 1 sec, which is 250k iterations
for (int i = 0; i < 250000; i++) {
auto sub = std::make_shared<TestSubscriberNoop>();
RegisterSharedValidationInterface(sub);
UnregisterSharedValidationInterface(sub);
}
// tell the other thread we are done
generate = false;
}};
gen.join();
sub.join();
BOOST_CHECK(!generate);
}
class TestInterface : public CValidationInterface
{
public:

View File

@@ -1917,6 +1917,9 @@ static UniValue walletpassphrase(const JSONRPCRequest& request)
}.Check(request);
int64_t nSleepTime;
int64_t relock_time;
// Prevent concurrent calls to walletpassphrase with the same wallet.
LOCK(pwallet->m_unlock_mutex);
{
auto locked_chain = pwallet->chain().lock();
LOCK(pwallet->cs_wallet);
@@ -1955,6 +1958,7 @@ static UniValue walletpassphrase(const JSONRPCRequest& request)
pwallet->TopUpKeyPool();
pwallet->nRelockTime = GetTime() + nSleepTime;
relock_time = pwallet->nRelockTime;
}
// rpcRunLater must be called without cs_wallet held otherwise a deadlock
@@ -1966,9 +1970,11 @@ static UniValue walletpassphrase(const JSONRPCRequest& request)
// wallet before the following callback is called. If a valid shared pointer
// is acquired in the callback then the wallet is still loaded.
std::weak_ptr<CWallet> weak_wallet = wallet;
pwallet->chain().rpcRunLater(strprintf("lockwallet(%s)", pwallet->GetName()), [weak_wallet] {
pwallet->chain().rpcRunLater(strprintf("lockwallet(%s)", pwallet->GetName()), [weak_wallet, relock_time] {
if (auto shared_wallet = weak_wallet.lock()) {
LOCK(shared_wallet->cs_wallet);
// Skip if this is not the most recent rpcRunLater callback.
if (shared_wallet->nRelockTime != relock_time) return;
shared_wallet->Lock();
shared_wallet->nRelockTime = 0;
}

View File

@@ -867,8 +867,10 @@ public:
std::vector<std::string> GetDestValues(const std::string& prefix) const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
//! Holds a timestamp at which point the wallet is scheduled (externally) to be relocked. Caller must arrange for actual relocking to occur via Lock().
int64_t nRelockTime = 0;
int64_t nRelockTime GUARDED_BY(cs_wallet){0};
// Used to prevent concurrent calls to walletpassphrase RPC.
Mutex m_unlock_mutex;
bool Unlock(const SecureString& strWalletPassphrase, bool accept_no_keys = false);
bool ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase, const SecureString& strNewWalletPassphrase);
bool EncryptWallet(const SecureString& strWalletPassphrase);

View File

@@ -5,12 +5,14 @@
"""Test the -alertnotify, -blocknotify and -walletnotify options."""
import os
from test_framework.address import ADDRESS_BCRT1_UNSPENDABLE
from test_framework.address import ADDRESS_BCRT1_UNSPENDABLE, keyhash_to_p2pkh
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
assert_equal,
wait_until,
connect_nodes,
disconnect_nodes,
hex_str_to_bytes,
)
# Linux allow all characters other than \x00
@@ -81,8 +83,72 @@ class NotificationsTest(BitcoinTestFramework):
# directory content should equal the generated transaction hashes
txids_rpc = list(map(lambda t: notify_outputname(self.wallet, t['txid']), self.nodes[1].listtransactions("*", block_count)))
assert_equal(sorted(txids_rpc), sorted(os.listdir(self.walletnotify_dir)))
for tx_file in os.listdir(self.walletnotify_dir):
os.remove(os.path.join(self.walletnotify_dir, tx_file))
# Conflicting transactions tests. Give node 0 same wallet seed as
# node 1, generate spends from node 0, and check notifications
# triggered by node 1
self.log.info("test -walletnotify with conflicting transactions")
self.nodes[0].sethdseed(seed=self.nodes[1].dumpprivkey(keyhash_to_p2pkh(hex_str_to_bytes(self.nodes[1].getwalletinfo()['hdseedid'])[::-1])))
self.nodes[0].rescanblockchain()
self.nodes[0].generatetoaddress(100, ADDRESS_BCRT1_UNSPENDABLE)
# Generate transaction on node 0, sync mempools, and check for
# notification on node 1.
tx1 = self.nodes[0].sendtoaddress(address=ADDRESS_BCRT1_UNSPENDABLE, amount=1, replaceable=True)
assert_equal(tx1 in self.nodes[0].getrawmempool(), True)
self.sync_mempools()
self.expect_wallet_notify([tx1])
# Generate bump transaction, sync mempools, and check for bump1
# notification. In the future, per
# https://github.com/bitcoin/bitcoin/pull/9371, it might be better
# to have notifications for both tx1 and bump1.
bump1 = self.nodes[0].bumpfee(tx1)["txid"]
assert_equal(bump1 in self.nodes[0].getrawmempool(), True)
self.sync_mempools()
self.expect_wallet_notify([bump1])
# Add bump1 transaction to new block, checking for a notification
# and the correct number of confirmations.
self.nodes[0].generatetoaddress(1, ADDRESS_BCRT1_UNSPENDABLE)
self.sync_blocks()
self.expect_wallet_notify([bump1])
assert_equal(self.nodes[1].gettransaction(bump1)["confirmations"], 1)
# Generate a second transaction to be bumped.
tx2 = self.nodes[0].sendtoaddress(address=ADDRESS_BCRT1_UNSPENDABLE, amount=1, replaceable=True)
assert_equal(tx2 in self.nodes[0].getrawmempool(), True)
self.sync_mempools()
self.expect_wallet_notify([tx2])
# Bump tx2 as bump2 and generate a block on node 0 while
# disconnected, then reconnect and check for notifications on node 1
# about newly confirmed bump2 and newly conflicted tx2. Currently
# only the bump2 notification is sent. Ideally, notifications would
# be sent both for bump2 and tx2, which was the previous behavior
# before being broken by an accidental change in PR
# https://github.com/bitcoin/bitcoin/pull/16624. The bug is reported
# in issue https://github.com/bitcoin/bitcoin/issues/18325.
disconnect_nodes(self.nodes[0], 1)
bump2 = self.nodes[0].bumpfee(tx2)["txid"]
self.nodes[0].generatetoaddress(1, ADDRESS_BCRT1_UNSPENDABLE)
assert_equal(self.nodes[0].gettransaction(bump2)["confirmations"], 1)
assert_equal(tx2 in self.nodes[1].getrawmempool(), True)
connect_nodes(self.nodes[0], 1)
self.sync_blocks()
self.expect_wallet_notify([bump2])
assert_equal(self.nodes[1].gettransaction(bump2)["confirmations"], 1)
# TODO: add test for `-alertnotify` large fork notifications
def expect_wallet_notify(self, tx_ids):
wait_until(lambda: len(os.listdir(self.walletnotify_dir)) >= len(tx_ids), timeout=10)
assert_equal(sorted(notify_outputname(self.wallet, tx_id) for tx_id in tx_ids), sorted(os.listdir(self.walletnotify_dir)))
for tx_file in os.listdir(self.walletnotify_dir):
os.remove(os.path.join(self.walletnotify_dir, tx_file))
if __name__ == '__main__':
NotificationsTest().main()

51
test/functional/p2p_getdata.py Executable file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env python3
# Copyright (c) 2020 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test GETDATA processing behavior"""
from collections import defaultdict
from test_framework.messages import (
CInv,
msg_getdata,
)
from test_framework.mininode import (
mininode_lock,
P2PInterface,
)
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import wait_until
class P2PStoreBlock(P2PInterface):
def __init__(self):
super().__init__()
self.blocks = defaultdict(int)
def on_block(self, message):
message.block.calc_sha256()
self.blocks[message.block.sha256] += 1
class GetdataTest(BitcoinTestFramework):
def set_test_params(self):
self.num_nodes = 1
def run_test(self):
self.nodes[0].add_p2p_connection(P2PStoreBlock())
self.log.info("test that an invalid GETDATA doesn't prevent processing of future messages")
# Send invalid message and verify that node responds to later ping
invalid_getdata = msg_getdata()
invalid_getdata.inv.append(CInv(t=0, h=0)) # INV type 0 is invalid.
self.nodes[0].p2ps[0].send_and_ping(invalid_getdata)
# Check getdata still works by fetching tip block
best_block = int(self.nodes[0].getbestblockhash(), 16)
good_getdata = msg_getdata()
good_getdata.inv.append(CInv(t=2, h=best_block))
self.nodes[0].p2ps[0].send_and_ping(good_getdata)
wait_until(lambda: self.nodes[0].p2ps[0].blocks[best_block] == 1, timeout=30, lock=mininode_lock)
if __name__ == '__main__':
GetdataTest().main()

View File

@@ -145,6 +145,7 @@ BASE_SCRIPTS = [
'rpc_deprecated.py',
'wallet_disable.py',
'p2p_addr_relay.py',
'p2p_getdata.py',
'rpc_net.py',
'wallet_keypool.py',
'p2p_mempool.py',