Compare commits

...

107 Commits
master ... 25.x

Author SHA1 Message Date
merge-script fb9890cbd5
Merge bitcoin/bitcoin#30184: [25.x] windeploy: Renew certificate
7a4eff2c98 windeploy: Renew certificate (Ava Chow)

Pull request description:

  Github-Pull: #30149
  Rebased-From: 9f4ff1e965

ACKs for top commit:
  theuni:
    ACK 7a4eff2c98
  glozow:
    ACK 7a4eff2c98

Tree-SHA512: 827b20fad32a2f140e12595ff297fc29769a6189561f13c06e4b3dc05265f48efbf3185320d436229767918dfda9d7417ec8a39018662379641e3f7828ba93a5
2024-05-29 09:06:05 +01:00
Ava Chow 7a4eff2c98
windeploy: Renew certificate
Github-Pull: #30149
Rebased-From: 9f4ff1e965
2024-05-28 16:18:20 +01:00
fanquake 62c22dd679
Merge bitcoin/bitcoin#29794: [25.x] Finalize 25.2
e95c484f7d doc: Update release notes for 25.2 final (Ava Chow)
14b85b6276 doc: Update manpages for 25.2 final (Ava Chow)
1c13eae6e0 doc: Bump bips.md to 25.2 (Ava Chow)
03a568deb6 build: Bump to 25.2 final (Ava Chow)

Pull request description:

  Final changes for 25.2 release

ACKs for top commit:
  glozow:
    utACK e95c484f7d
  fanquake:
    ACK e95c484f7d

Tree-SHA512: 10a4d6d516e2bea9b4383eb174a6c7827be0359522d366746ead0a28f275e0cadf6e5e9a0e4cafe425438532a57ada0ecbfba300f02370eac411f101dd86dfe6
2024-04-03 10:30:24 +01:00
Ava Chow e95c484f7d doc: Update release notes for 25.2 final 2024-04-02 18:31:03 -04:00
Ava Chow 14b85b6276 doc: Update manpages for 25.2 final 2024-04-02 18:30:12 -04:00
Ava Chow 1c13eae6e0 doc: Bump bips.md to 25.2 2024-04-02 18:25:08 -04:00
Ava Chow 03a568deb6 build: Bump to 25.2 final 2024-04-02 18:24:34 -04:00
fanquake d5bad0d2d1
Merge bitcoin/bitcoin#29531: [25.x] backports
27cfda1bae doc: Update release notes for 25.2rc2 (Ava Chow)
daba5e2c5b doc: Update manpages for 25.2rc2 (Ava Chow)
8a0c980d6e build: Bump to 25.2rc2 (Ava Chow)
cf7d3a8cd0 p2p: Don't consider blocks mutated if they don't connect to known prev block (Greg Sanders)
3eaaafa225 [test] IsBlockMutated unit tests (dergoegge)
0667441a7b [validation] Cache merkle root and witness commitment checks (dergoegge)
de97ecf14f [test] Add regression test for #27608 (dergoegge)
8cc4b24c74 [net processing] Don't process mutated blocks (dergoegge)
098f07dc8d [validation] Merkle root malleation should be caught by IsBlockMutated (dergoegge)
8804c368f5 [validation] Introduce IsBlockMutated (dergoegge)
4f5baac6ca [validation] Isolate merkle root checks (dergoegge)
f93be0103f test: make sure keypool sizes do not change on `getrawchangeaddress`/`getnewaddress` failures (UdjinM6)
7c08ccf19b wallet: Avoid updating `ReserveDestination::nIndex` when `GetReservedDestination` fails (UdjinM6)

Pull request description:

  Backport:

  * #29510
  * #29412
  * #29524

ACKs for top commit:
  glozow:
    utACK 27cfda1bae

Tree-SHA512: 37feadd65d9ea55c0a92c9d2a6f74f87cafed3bc67f8deeaaafc5b7042f954e55ea34816612e1a49088f4f1906f104e00c7c3bec7affd1c1f48220b57a8769c5
2024-03-22 13:40:07 +00:00
Ava Chow 27cfda1bae doc: Update release notes for 25.2rc2 2024-03-21 13:43:34 -04:00
Ava Chow daba5e2c5b doc: Update manpages for 25.2rc2 2024-03-08 12:22:30 -05:00
Ava Chow 8a0c980d6e build: Bump to 25.2rc2 2024-03-08 12:14:46 -05:00
Greg Sanders cf7d3a8cd0
p2p: Don't consider blocks mutated if they don't connect to known prev block
Github-Pull: #29524
Rebased-From: a1fbde0ef7
2024-03-05 12:18:05 -05:00
dergoegge 3eaaafa225
[test] IsBlockMutated unit tests
Github-Pull: #29412
Rebased-From: d8087adc7e
2024-03-05 12:17:59 -05:00
dergoegge 0667441a7b
[validation] Cache merkle root and witness commitment checks
Slight performance improvement by avoiding duplicate work.

Github-Pull: #29412
Rebased-From: 1ec6bbeb8d
2024-03-05 12:17:54 -05:00
dergoegge de97ecf14f
[test] Add regression test for #27608
Github-Pull: #29412
Rebased-From: 5bf4f5ba32
2024-03-05 12:17:49 -05:00
dergoegge 8cc4b24c74
[net processing] Don't process mutated blocks
We preemptively perform a block mutation check before further processing
a block message (similar to early sanity checks on other messsage
types). The main reasons for this change are as follows:

- `CBlock::GetHash()` is a foot-gun without a prior mutation check, as
  the hash returned only commits to the header but not to the actual
  transactions (`CBlock::vtx`) contained in the block.
- We have observed attacks that abused mutated blocks in the past, which
  could have been prevented by simply not processing mutated blocks
  (e.g. https://github.com/bitcoin/bitcoin/pull/27608).

Github-Pull: #29412
Rebased-From: 49257c0304
2024-03-05 12:17:45 -05:00
dergoegge 098f07dc8d
[validation] Merkle root malleation should be caught by IsBlockMutated
Github-Pull: #29412
Rebased-From: 2d8495e080
2024-03-05 12:17:40 -05:00
dergoegge 8804c368f5
[validation] Introduce IsBlockMutated
Github-Pull: #29412
Rebased-From: 66abce1d98
2024-03-05 12:17:35 -05:00
dergoegge 4f5baac6ca
[validation] Isolate merkle root checks
Github-Pull: #29412
Rebased-From: 95bddb930a
2024-03-05 12:17:28 -05:00
UdjinM6 f93be0103f
test: make sure keypool sizes do not change on `getrawchangeaddress`/`getnewaddress` failures
Github-Pull: bitcoin/bitcoin#29510
Rebased-From: e073f1dfda
2024-03-01 17:12:36 -05:00
UdjinM6 7c08ccf19b
wallet: Avoid updating `ReserveDestination::nIndex` when `GetReservedDestination` fails
Github-Pull: bitcoin/bitcoin#29510
Rebased-From: 367bb7a80c
2024-03-01 17:12:25 -05:00
fanquake 1ce5accc32
Merge bitcoin/bitcoin#29464: [25.2] Final backports and changes for 25.2rc1
9f13dc1ed3 doc: Update release notes for 25.2rc1 (Ava Chow)
a27662b16a doc: update manpages for 25.2rc1 (Ava Chow)
65c6171784 build: Bump to 25.2rc1 (Ava Chow)
cf0f43ee42 wallet: Fix use-after-free in WalletBatch::EraseRecords (MarcoFalke)
6acfc4324c Use only Span{} constructor for byte-like types where possible (MarcoFalke)
b40d10787b util: Allow std::byte and char Span serialization (MarcoFalke)

Pull request description:

  Backport:

  * #29176
  * #27927

  #29176 does not cleanly backport, and it also requires 27927 to work. Both are still fairly simple backports.

  Also does the rest of the version bump tasks for 25.2rc1.

ACKs for top commit:
  fanquake:
    ACK 9f13dc1ed3

Tree-SHA512: 9d9dbf415f8559410eba9a431b61a8fc94216898d2d1fd8398e1f7a22a04790faade810e65324c7a797456b33396c3a58f991e81319aaaa63d3ab441e5e20dbc
2024-02-26 11:54:29 +00:00
Ava Chow 9f13dc1ed3 doc: Update release notes for 25.2rc1 2024-02-21 18:52:41 -05:00
Ava Chow a27662b16a doc: update manpages for 25.2rc1 2024-02-21 18:48:50 -05:00
Ava Chow 65c6171784 build: Bump to 25.2rc1 2024-02-21 18:39:11 -05:00
MarcoFalke cf0f43ee42
wallet: Fix use-after-free in WalletBatch::EraseRecords
Github-Pull: bitcoin/bitcoin#29176
Rebased-From: faebf1df2a
2024-02-21 18:34:20 -05:00
MarcoFalke 6acfc4324c
Use only Span{} constructor for byte-like types where possible
This removes bloat that is not needed.

Github-Pull: bitcoin/bitcoin#27927
Rebased-From: fa38d86235
2024-02-21 18:34:05 -05:00
MarcoFalke b40d10787b
util: Allow std::byte and char Span serialization
Github-Pull: bitcoin/bitcoin#27927
Rebased-From: fa257bc831
2024-02-21 18:33:43 -05:00
fanquake 8087626cbd
Merge bitcoin/bitcoin#28768: [25.x] Backports
53bbda5114 doc: update release notes for 25.x (fanquake)
31e1e035be test: add regression test for the getrawtransaction segfault (Martin Zumsande)
041228d293 rpc: fix getrawtransaction segfault (Martin Zumsande)
b86285df1f gui: fix crash on selecting "Mask values" in transaction view (Sebastian Falbesoner)
c21024fd86 doc: add historical release notes for 25.1 (fanquake)

Pull request description:

  Collecting backports for the 25.x branch. Currently:
  * https://github.com/bitcoin-core/gui/pull/774
  * https://github.com/bitcoin/bitcoin/pull/29003

ACKs for top commit:
  stickies-v:
    ACK 53bbda5114

Tree-SHA512: 9b1ba17cce9de70d20329372ba71225dd930718a1f7db84a7be764dcfbba01c5e466255e7b95433ab6d7559ee8aaa04cc99ee5d1512d91fcc0a8015f1aa4150a
2024-01-16 11:23:36 +00:00
fanquake 53bbda5114
doc: update release notes for 25.x 2024-01-16 09:28:18 +00:00
Martin Zumsande 31e1e035be
test: add regression test for the getrawtransaction segfault
This fails on master without the previous commit.

Github-Pull: #29003
Rebased-From: 9075a44646
2024-01-15 15:23:49 +00:00
Martin Zumsande 041228d293
rpc: fix getrawtransaction segfault
The crash would happen when querying a mempool transaction with verbosity=2, while pruning.

Github-Pull: #29003
Rebased-From: 494a926d05
2024-01-15 15:23:49 +00:00
Sebastian Falbesoner b86285df1f
gui: fix crash on selecting "Mask values" in transaction view
This commits fixes a crash bug that can be caused with the following steps:
- change to the "Transactions" view
- right-click on an arbitrary transaction -> "Show transaction details"
- close the transaction detail window again
- select "Settings" -> "Mask values"

The problem is that the list of opened dialogs, tracked in the member
variable `m_opened_dialogs`, is only ever appended with newly opened
transaction detail dialog pointers, but never removed. This leads to
dangling pointers in the list, and if the "Mask values" menu item is
selected, a crash is caused in the course of trying to close the opened
transaction detail dialogs (see `closeOpenedDialogs()` method). Fix this
by removing the pointer from the list if the corresponding widget is
destroyed.

Github-Pull: https://github.com/bitcoin-core/gui/pull/774
Rebased-From: e26e665f9f
2023-12-11 15:51:59 +00:00
fanquake c21024fd86
doc: add historical release notes for 25.1 2023-12-11 15:51:59 +00:00
fanquake 7da4ae1f78
Merge bitcoin/bitcoin#28655: [25.1] Final Changes
a13670090d doc: update release notes for 25.1 (fanquake)
e8d5c35e80 doc: update manual pages for 25.1 (fanquake)
9e00b73ee7 build: bump version to 25.1 final (fanquake)

Pull request description:

  Final changes for `v25.1`.
  PR for bitcoincore.org is here: https://github.com/bitcoin-core/bitcoincore.org/pull/991.
  No additional changes have been backported since rc1 (tagged 14 days ago),
  and no bugs or issues have been reported (test bins have been available for 9 days).

ACKs for top commit:
  hebasto:
    ACK a13670090d.
  TheCharlatan:
    lgtm ACK a13670090d

Tree-SHA512: 037f937dd4d2a9de15ff15a80f35b6047b61ffc3d9a33e7d4a4fcbce6302569bbc516c6da5849211b34ebbe914c4edcdd182e2d1d43897d0dcd32834ce6f2574
2023-10-16 16:44:20 +01:00
fanquake a13670090d
doc: update release notes for 25.1 2023-10-16 11:35:40 +02:00
fanquake e8d5c35e80
doc: update manual pages for 25.1 2023-10-16 11:34:25 +02:00
fanquake 9e00b73ee7
build: bump version to 25.1 final 2023-10-16 11:30:08 +02:00
fanquake 167d3e2f16
Merge bitcoin/bitcoin#28559: [25.1] Final changes for 25.1rc1
10f3f813b2 doc: add release notes for 25.1rc1 (fanquake)
71aed7aa31 doc: update manual pages for 25.1rc1 (fanquake)
02f059c819 build: Bump version to 25.1rc1 (fanquake)
dc1fcec026 doc: add 25.0 release notes (fanquake)

Pull request description:

  Final changes to tag a `25.1rc1`.
  Bumps version numbers, man pages, adds release notes etc.

ACKs for top commit:
  dergoegge:
    ACK 10f3f813b2
  hebasto:
    ACK 10f3f813b2, I have reviewed the code and it looks OK.
  willcl-ark:
    ACK 10f3f813b2
  stickies-v:
    ACK 10f3f813b2

Tree-SHA512: 3e1c527dac06afb4c8e1e481055211f69aa0ed769ac242ed610d23d470bbc0c062227034d01876ba4a5fa836e953fb001e8b0d6bc026069d372d34b8a031fb25
2023-10-04 13:10:16 +01:00
fanquake 10f3f813b2
doc: add release notes for 25.1rc1 2023-10-04 11:24:05 +01:00
fanquake 71aed7aa31
doc: update manual pages for 25.1rc1 2023-10-04 11:24:05 +01:00
fanquake 02f059c819
build: Bump version to 25.1rc1 2023-10-04 11:24:05 +01:00
fanquake dc1fcec026
doc: add 25.0 release notes 2023-10-04 11:24:05 +01:00
fanquake 9f8d501cb8
Merge bitcoin/bitcoin#28487: [25.1] Final backports
45a5fcb165 http: bugfix: track closed connection (stickies-v)
752a456fa8 http: log connection instead of request count (stickies-v)
ae86adabe4 http: refactor: use encapsulated HTTPRequestTracker (stickies-v)
f31899d19a gui: macOS, make appMenuBar part of the main app window (furszy)
64ffa94231 gui: macOS, do not process dock icon actions during shutdown (furszy)
e270f3f857 depends: fix unusable memory_resource in macos qt build (fanquake)
a6683945ca build, macos: Fix `qt` package build with new Xcode 15 linker (Hennadii Stepanov)
b3517cb1b5 test: Test loading wallets with conflicts without a chain (Andrew Chow)
d63478cb50 wallet: Check last block and conflict height are valid in MarkConflicted (Andrew Chow)
5e51a9cc72 ci: Nuke Android APK task, Use credits for tsan (MarcoFalke)
910c36253e test: ensure old fee_estimate.dat not read on restart and flushed (ismaelsadeeq)
37764d3300 tx fees, policy: read stale fee estimates with a regtest-only option (ismaelsadeeq)
16bb9161fa tx fees, policy: do not read estimates of old fee_estimates.dat (ismaelsadeeq)
c4dd5989b3 tx fees, policy: periodically flush fee estimates to fee_estimates.dat (ismaelsadeeq)
c36770cefd test: wallet, verify migration doesn't crash for an invalid script (furszy)
0d2a33e05c wallet: disallow migration of invalid or not-watched scripts (furszy)
2c51a07c08 Do not use std::vector = {} to release memory (Pieter Wuille)

Pull request description:

  Further backports for the `25.x` branch. Currently:
  * https://github.com/bitcoin/bitcoin/pull/27622
  * https://github.com/bitcoin/bitcoin/pull/27834
  * https://github.com/bitcoin/bitcoin/pull/28125
  * https://github.com/bitcoin/bitcoin/pull/28452
  * https://github.com/bitcoin/bitcoin/pull/28542
  * https://github.com/bitcoin/bitcoin/pull/28543
  * https://github.com/bitcoin/bitcoin/pull/28551
  * https://github.com/bitcoin/bitcoin/pull/28571
  * https://github.com/bitcoin-core/gui/pull/751

ACKs for top commit:
  hebasto:
    re-ACK 45a5fcb165, only #28551 has been backported with since my recent [review](https://github.com/bitcoin/bitcoin/pull/28487#pullrequestreview-1655584132).
  dergoegge:
    reACK 45a5fcb165
  willcl-ark:
    reACK 45a5fcb165

Tree-SHA512: 0f5807aa364b7c2a2039fef11d5cd5e168372c3bf5b0e941350fcd92e7db4a1662801b97bb4f68e29788c77d24bbf97385a483c4501ca72d93fa25327d5694fa
2023-10-04 11:23:14 +01:00
stickies-v 45a5fcb165
http: bugfix: track closed connection
It is possible that the client disconnects before the request is
handled. In those cases, evhttp_request_set_on_complete_cb is never
called, which means that on shutdown the server we'll keep waiting
endlessly.

By adding evhttp_connection_set_closecb, libevent automatically
cleans up those dead connections at latest when we shutdown, and
depending on the libevent version already at the moment of remote
client disconnect. In both cases, the bug is fixed.

Github-Pull: #28551
Rebased-From: 68f23f57d7
2023-10-04 10:12:59 +01:00
stickies-v 752a456fa8
http: log connection instead of request count
There is no significant benefit in logging the request count instead
of the connection count. Reduces amount of code and computational
complexity.

Github-Pull: #28551
Rebased-From: 084d037231
2023-10-04 10:11:01 +01:00
stickies-v ae86adabe4
http: refactor: use encapsulated HTTPRequestTracker
Introduces and uses a HTTPRequestTracker class to keep track of
how many HTTP requests are currently active, so we don't stop the
server before they're all handled.

This has two purposes:
1. In a next commit, allows us to untrack all requests associated
with a connection without running into lifetime issues of the
connection living longer than the request
(see https://github.com/bitcoin/bitcoin/pull/27909#discussion_r1265614783)

2. Improve encapsulation by making the mutex and cv internal members,
and exposing just the WaitUntilEmpty() method that can be safely
used.

Github-Pull: #28551
Rebased-From: 41f9027813
2023-10-04 10:10:35 +01:00
furszy f31899d19a
gui: macOS, make appMenuBar part of the main app window
By moving the appMenuBar destruction responsibility to the QT
framework, we ensure the disconnection of the submenus signals
prior to the destruction of the main app window.

The standalone menu bar may have served a purpose in earlier
versions when it didn't contain actions that directly open
specific screens within the main application window. However,
at present, all the actions within the appMenuBar lead to the
opening of screens within the main app window. So, the absence
of a main app window makes these actions essentially pointless.

Github-Pull: gui#751
Rebased-From: bae209e387
2023-10-03 15:59:17 +01:00
furszy 64ffa94231
gui: macOS, do not process dock icon actions during shutdown
As the 'QMenuBar' is created without a parent window in MacOS, the
app crashes when the user presses the shutdown button and, right
after it, triggers any action in the menu bar.

This happens because the QMenuBar is manually deleted in the
BitcoinGUI destructor but the events attached to it children
actions are not disconnected, so QActions events such us the
'QMenu::aboutToShow' could try to access null pointers.

Instead of guarding every single QAction pointer inside the
QMenu::aboutToShow slot, or manually disconnecting all
registered events in the destructor, we can check if a
shutdown was requested and discard the event.

The 'node' field is a ref whose memory is held by the
main application class, so it is safe to use here. Events
are disconnected prior destructing the main application object.

Furthermore, the 'MacDockIconHandler::dockIconClicked' signal
can make the app crash during shutdown for the very same
reason. The 'show()' call triggers the 'QApplication::focusWindowChanged'
event, which is connected to the 'minimize_action' QAction,
which is also part of the app menu bar, which could no longer exist.

Github-Pull: gui#751
Rebased-From: e14cc8fc69
2023-10-03 15:58:41 +01:00
fanquake e270f3f857
depends: fix unusable memory_resource in macos qt build
See https://codereview.qt-project.org/c/qt/qtbase/+/482392.

Github-Pull: #28571
Rebased-From: 848eec0936
2023-10-03 15:55:04 +01:00
Hennadii Stepanov a6683945ca
build, macos: Fix `qt` package build with new Xcode 15 linker
Github-Pull: #28543
Rebased-From: 79ef528511
2023-10-03 10:32:55 +01:00
Andrew Chow b3517cb1b5
test: Test loading wallets with conflicts without a chain
Loading a wallet with conflicts without a chain (e.g. wallet tool and
migration) would previously result in an assertion due to -1 being both
a valid number of conflict confirmations, and the indicator that that
member has not been set yet.

Github-Pull: #28542
Rebased-From: 782701ce7d
2023-10-02 13:39:34 +01:00
Andrew Chow d63478cb50
wallet: Check last block and conflict height are valid in MarkConflicted
MarkConflicted calculates conflict confirmations incorrectly when both
the last block processed height and the conflicting height are negative
(i.e. uninitialized). If either are negative, we should not be marking
conflicts and should exit early.

Github-Pull: #28542
Rebased-From: 4660fc82a1
2023-10-02 13:29:04 +01:00
MarcoFalke 5e51a9cc72
ci: Nuke Android APK task, Use credits for tsan
Github-Pull: #27834
Rebased-From: fa22538e48
2023-10-02 13:09:01 +01:00
ismaelsadeeq 910c36253e
test: ensure old fee_estimate.dat not read on restart and flushed
This commit adds tests to ensure that old fee_estimates.dat files
are not read and that fee_estimates are periodically flushed to the
fee_estimates.dat file.

Additionaly it tests the -regtestonly option -acceptstalefeeestimates.

Github-Pull: #27622
Rebased-From: d2b39e09bc
2023-10-02 13:09:01 +01:00
ismaelsadeeq 37764d3300
tx fees, policy: read stale fee estimates with a regtest-only option
If -acceptstalefeeestimates option is passed stale fee estimates can now
be read when operating in regtest environments.

Additionally, this commit updates all declarations of the CBlockPolicyEstimator
class to include a the second constructor variable.

Github-Pull: #27622
Rebased-From: cf219f29f3
2023-10-02 13:09:01 +01:00
ismaelsadeeq 16bb9161fa
tx fees, policy: do not read estimates of old fee_estimates.dat
Old fee estimates could cause transactions to become stuck in the
mempool. This commit prevents the node from using stale estimates
from an old file.

Github-Pull: #27622
Rebased-From: 3eb241a141
2023-10-02 13:09:01 +01:00
ismaelsadeeq c4dd5989b3
tx fees, policy: periodically flush fee estimates to fee_estimates.dat
This reduces chances of having old estimates in fee_estimates.dat.

Github-Pull: #27622
Rebased-From: 5b886f2b43
2023-10-02 13:09:01 +01:00
furszy c36770cefd
test: wallet, verify migration doesn't crash for an invalid script
The migration process must skip any invalid script inside the legacy
spkm and all the addressbook records linked to them.

These scripts are not being watched by the current wallet, nor should
be watched by the migrated one.

IsMine() returns ISMINE_NO for them.

Github-Pull: #28125
Rebased-From: 8e7e3e6149
2023-10-02 13:09:01 +01:00
furszy 0d2a33e05c
wallet: disallow migration of invalid or not-watched scripts
The legacy wallet allowed to import any raw script, without checking if
it was valid or not. Appending it to the watch-only set.

This causes a crash in the migration process because we are only
expecting to find valid scripts inside the legacy spkm.

These stored scripts internally map to `ISMINE_NO` (same as if they
weren't stored at all..).

So we need to check for these special case, and take into account that
the legacy spkm could be storing invalid not watched scripts.

Which, in code words, means IsMineInner() returning IsMineResult::INVALID
for them.

Github-Pull: #28125
Rebased-From: 1de8a2372a
2023-10-02 13:09:01 +01:00
Pieter Wuille 2c51a07c08
Do not use std::vector = {} to release memory
Github-Pull: #28452
Rebased-From: 3fcd7fc7ff
2023-10-02 13:09:00 +01:00
fanquake 887cbfcc93
Merge bitcoin/bitcoin#28534: [25.x] qt: 25.1rc1 translations update
88b525f93a qt: 25.1rc1 translations update (Hennadii Stepanov)

Pull request description:

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

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

  Changes in "Chinese (China) (zh_CN)" translation were manually discarded as they have too many removals (it looks like a vandalism).

ACKs for top commit:
  stickies-v:
    re-ACK 88b525f93a
  jarolrod:
    ACK 88b525f93a

Tree-SHA512: 007d3e00f92d2450f99d1a84b53dc929fd80b7ebb7939271b67969bf99bb3b0ae7426428f6c63f1dbdfa88b90cb237e7614f7b2239f9773b84424b544bf106af
2023-10-02 10:47:32 +02:00
Hennadii Stepanov 88b525f93a
qt: 25.1rc1 translations update 2023-09-28 15:50:04 +01:00
fanquake ecc74cd4f3
Merge bitcoin/bitcoin#28047: [25.x] Further backports for 25.1
494f1afa5a depends: xcb-proto 1.15.2 (fanquake)
513ca0a711 test: wallet, add coverage for watch-only raw sh script migration (furszy)
6d5a510dcd descriptor: InferScript, do not return top-level only func as sub descriptor (furszy)
37d9cc657c test: wallet, add coverage for addressbook migration (furszy)
4b16650c10 wallet: migration bugfix, persist empty labels (furszy)
59b06b696a wallet: migration bugfix, clone 'send' record label to all wallets (furszy)

Pull request description:

  Currently backports:
  * #28038
  * #28067 2nd & 3rd commits.
  * #28097

ACKs for top commit:
  stickies-v:
    ACK 494f1afa5a

Tree-SHA512: cea134cfa72950d8428191adce79c0881302ca54488f64d3d4a5f9070bb2445d8074e58fa31a482481c4eabb74c852a025f53597540fc646dc20f33b21cf0a06
2023-09-06 15:55:51 +01:00
fanquake 494f1afa5a
depends: xcb-proto 1.15.2
Resolves build failures under Python 3.12, i.e building on rawhide:
```bash
make[3]: Nothing to be done for 'install-exec-am'.
 /usr/bin/mkdir -p '/bitcoin/depends/work/staging/aarch64-unknown-linux-gnu/xcb_proto/1.14.1-4a91ac9dc41/bitcoin/depends/aarch64-unknown-linux-gnu/lib/python3.12/site-packages/xcbgen'
 /usr/bin/install -c -m 644 __init__.py error.py expr.py align.py matcher.py state.py xtypes.py '/bitcoin/depends/work/staging/aarch64-unknown-linux-gnu/xcb_proto/1.14.1-4a91ac9dc41/bitcoin/depends/aarch64-unknown-linux-gnu/lib/python3.12/site-packages/xcbgen'
Traceback (most recent call last):
  File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'imp'
make[3]: *** [Makefile:271: install-pkgpythonPYTHON] Error 1
```

`imp` was removed in 3.12: https://docs.python.org/3/library/imp.html.

Github-Pull: #28097
Rebased-From: 7cb88c8b46
2023-07-21 09:57:59 +01:00
furszy 513ca0a711
test: wallet, add coverage for watch-only raw sh script migration
Github-Pull: #28067
Rebased-From: dd9633b516
2023-07-21 09:39:15 +01:00
furszy 6d5a510dcd
descriptor: InferScript, do not return top-level only func as sub descriptor
e.g. sh(addr(ADDR)) or sh(raw(HEX)) are invalid descriptors.

Making sh and wsh top level functions to return addr/raw descriptors when
the subscript inference fails.

Github-Pull: #28067
Rebased-From: cc781a2180
2023-07-21 09:38:35 +01:00
furszy 37d9cc657c
test: wallet, add coverage for addressbook migration
Github-Pull: #28038
Rebased-From: 7ecc29a0b7
2023-07-07 17:32:28 +01:00
furszy 4b16650c10
wallet: migration bugfix, persist empty labels
addressbook records with no associated label could be
treated as change. And we don't want that for external
addresses.

Github-Pull: #28038
Rebased-From: a277f8357a
2023-07-07 17:31:14 +01:00
furszy 59b06b696a
wallet: migration bugfix, clone 'send' record label to all wallets
Github-Pull: #28038
Rebased-From: 1b64f6498c
2023-07-07 17:30:53 +01:00
fanquake 8825983716
Merge bitcoin/bitcoin#27752: [25.x] Parallel compact block downloads
b8ad3220a9 Unconditionally return when compact block status == READ_STATUS_FAILED (Greg Sanders)
cdd3de08e3 Add tests for parallel compact block downloads (Greg Sanders)
e66a5cbb56 Support up to 3 parallel compact block txn fetchings (Greg Sanders)
d1a93f5d41 Only request full blocks from the peer we thought had the block in-flight (Greg Sanders)
38e3af9fad Convert mapBlocksInFlight to a multimap (Greg Sanders)
a45159b8e2 Remove nBlocksInFlight (Greg Sanders)
722361e129 alias BlockDownloadMap for mapBlocksInFlight (Greg Sanders)

Pull request description:

  Backports:
  * https://github.com/bitcoin/bitcoin/pull/27626
  * https://github.com/bitcoin/bitcoin/pull/27743

ACKs for top commit:
  instagibbs:
    utACK b8ad3220a9
  ajtowns:
    ACK b8ad3220a9 ; confirmed patches are clean cherry-picks from master, and already tested patches prior to 25.0 release

Tree-SHA512: 438901496a5ed927662e62f936e3d1e7ffb727cb235869854983e8e29a68e144eb3bff307d9fc3ae785fb276b67a216b1cce397689252ca49c5d761efc1380ac
2023-07-04 12:00:54 +01:00
Greg Sanders b8ad3220a9
Unconditionally return when compact block status == READ_STATUS_FAILED
Github-Pull: #27743
Rebased-From: d972695797
2023-06-16 10:17:22 +01:00
Greg Sanders cdd3de08e3
Add tests for parallel compact block downloads
Github-Pull: #27626
Rebased-From: d7f359b35e
2023-06-16 10:17:22 +01:00
Greg Sanders e66a5cbb56
Support up to 3 parallel compact block txn fetchings
A single outbound slot is required, so if the first two slots
are taken by inbound in-flights, the node will reject additional
unless they are coming from outbound.

This means in the case where a fast sybil peer is attempting to
stall out a node, a single high bandwidth outbound peer can
mitigate the attack.

Github-Pull: #27626
Rebased-From: 03423f8bd1
2023-06-16 10:17:22 +01:00
Greg Sanders d1a93f5d41
Only request full blocks from the peer we thought had the block in-flight
This is a change in behavior so that if for some reason we request a block from a peer, we don't allow an unsolicited CMPCT_BLOCK announcement for that same block to cause a request for a full block from the uninvited peer (as some type of request is already outstanding from the original peer)

Github-Pull: #27626
Rebased-From: 13f9b20b4c
2023-06-16 10:17:22 +01:00
Greg Sanders 38e3af9fad
Convert mapBlocksInFlight to a multimap
Github-Pull: #27626
Rebased-From: cce96182ba
2023-06-16 10:17:22 +01:00
Greg Sanders a45159b8e2
Remove nBlocksInFlight
Github-Pull: #27626
Rebased-From: a90595478d
2023-06-16 10:17:21 +01:00
Greg Sanders 722361e129
alias BlockDownloadMap for mapBlocksInFlight
Github-Pull: #27626
Rebased-From: 86cff8bf18
2023-06-16 10:17:21 +01:00
fanquake 642b5dd1b4
Merge bitcoin/bitcoin#27887: [25.x] Backports
6233049709 ci: Switch to `amd64` container in "ARM" task (Hennadii Stepanov)
d845a3ed21 test: add coverage for `/deploymentinfo` passing a blockhash (brunoerg)
72ead8699f rest: bugfix, fix crash error when calling `/deploymentinfo` (brunoerg)
6f7a0ae58b ci: Use podman stop over podman kill (MarcoFalke)
de56daab41 ci: Use podman for persistent workers (MarcoFalke)
71f626ef2c ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN (MarcoFalke)

Pull request description:

  Currently backports:
  * https://github.com/bitcoin/bitcoin/pull/27777
  * https://github.com/bitcoin/bitcoin/pull/27844
  * https://github.com/bitcoin/bitcoin/pull/27853
  * https://github.com/bitcoin/bitcoin/pull/27886

  Effectively also backports: https://github.com/bitcoin/bitcoin/pull/27562.

ACKs for top commit:
  stickies-v:
    ACK 6233049709

Tree-SHA512: d0f3d5c4cd0cf9792f3270078b49ad6661e28e7a883f91e5981e8cfe95d01c6e415762ee2e3a5fea17d198299989a8b5412961c2cc788cef975b2ee45d84550c
2023-06-16 10:16:41 +01:00
Hennadii Stepanov 6233049709
ci: Switch to `amd64` container in "ARM" task
Tee `arm_container` does not support 32-bit mode anymore.
See: https://github.com/bitcoin/bitcoin/issues/27879

Github-Pull: #27886
Rebased-From: 016fe6d828
2023-06-15 10:38:29 +01:00
brunoerg d845a3ed21
test: add coverage for `/deploymentinfo` passing a blockhash
Github-Pull: #27853
Rebased-From: 7d452d826a
2023-06-15 10:38:29 +01:00
brunoerg 72ead8699f
rest: bugfix, fix crash error when calling `/deploymentinfo`
Github-Pull: #27853
Rebased-From: ce887eaf49
2023-06-15 10:38:28 +01:00
MarcoFalke 6f7a0ae58b
ci: Use podman stop over podman kill
This should avoid a race where the kill is not done when spinning up the
new container. podman stop waits 10 seconds by default.

Github-Pull: #27844
Rebased-From: faaa62754e
2023-06-15 10:38:28 +01:00
MarcoFalke de56daab41
ci: Use podman for persistent workers
Github-Pull: #27777
Rebased-From: fa123077bc
2023-06-15 10:38:19 +01:00
MarcoFalke 71f626ef2c
ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN
Github-Pull: #27777
Rebased-From: fa9c65a74c
2023-06-15 10:38:10 +01:00
fanquake cda3fe2808
Merge bitcoin/bitcoin#27775: [25.x] build: disable boost multi index safe mode
9dc5848492 build: disable boost multi index safe mode (willcl-ark)

Pull request description:

  Backports https://github.com/bitcoin/bitcoin/pull/27724 to `25.x`.

ACKs for top commit:
  stickies-v:
    ACK 9dc584849

Tree-SHA512: 5f156424bbd86caac6ace933b807cd62a21067bcfa7f572d6efeff2622ba0b15401038a3b06fe00d84cf62b5d9b8a9e101650d145683a21fa890c18a9c2bd4b6
2023-06-02 10:09:44 +01:00
willcl-ark 9dc5848492
build: disable boost multi index safe mode
Disable boost multi index safe mode by default when configuring with
--enable-debug.

This option can cause transactions to take a long time to be accepted
into the mempool under certain conditions; iterator destruction takes
O(n) time vs O(1) as they are stored in a singly linked list. See
27586 for more information.

Re-enable it on the CI builds which previously had it enabled.

Re-enable it on the msan fuzz target so that we have fuzz tasks testing
with it enabeld and disabled in this repo.

Github-Pull: #27724
Rebased-From: 59c8944749
2023-05-29 17:14:00 +01:00
fanquake 725c3dc2dd
Merge bitcoin/bitcoin#27750: [25.x] rpc: Fix invalid bech32 handling
796e1145a9 rpc: Fix invalid bech32 handling (MarcoFalke)

Pull request description:

  Backports https://github.com/bitcoin/bitcoin/pull/27727 to 25.x.

ACKs for top commit:
  MarcoFalke:
    clean cherry-pick ACK 796e1145a9 💼

Tree-SHA512: 2dd2064546b422160ddcc2c544ae18ef24179d31289bdedfa2e34fc0edaaec71d9b3f2a19a81bfce3f4d90bbd59daccc96cda8a3df42b5a453a9a240f48114bf
2023-05-25 15:50:42 +01:00
MarcoFalke 796e1145a9
rpc: Fix invalid bech32 handling
Github-Pull: #27727
Rebased-From: eeee55f928
2023-05-25 11:15:27 +01:00
fanquake 8105bce5b3
Merge bitcoin/bitcoin#27686: 25.0 Final Changes
6ee3881551 doc: update release notes for 25.0 (fanquake)
51195ea570 doc: update manual pages for 25.0 (fanquake)
8f7db443e9 build: bump version to v25.0 final (fanquake)

Pull request description:

  Final changes for v25.0.
  PR for bitcoincore.org is here: https://github.com/bitcoin-core/bitcoincore.org/pull/970.

ACKs for top commit:
  dergoegge:
    ACK 6ee3881551

Tree-SHA512: 7325e7d2747fbbeaa7efa9ceebfef56121d6866441fc4f3f9e95e67ab8ad7d4e518db4f545c214f1b677eaea84f28c1ea4f790aaf993a20904c76c3592406fd6
2023-05-25 11:10:39 +01:00
fanquake 6ee3881551
doc: update release notes for 25.0 2023-05-24 11:29:57 +01:00
fanquake 51195ea570
doc: update manual pages for 25.0 2023-05-19 12:17:31 +01:00
fanquake 8f7db443e9
build: bump version to v25.0 final 2023-05-19 12:12:58 +01:00
fanquake 8996da626d
Merge bitcoin/bitcoin#27613: [25.0] Backports for rc2
49a2d66f4e doc: update manual pages for v25.0rc2 (fanquake)
3ea4a115c2 build: bump version to v25.0rc2 (fanquake)
7ef71e30c9 net_processing: Boost inv trickle rate (Anthony Towns)
1adbcd302f txmempool: have CompareDepthAndScore sort missing txs first (Anthony Towns)
9a23079df3 p2p: Avoid prematurely clearing download state for other peers (Suhas Daftuar)

Pull request description:

  Backports for rc2. Currently:
  * https://github.com/bitcoin/bitcoin/pull/27608
  * https://github.com/bitcoin/bitcoin/pull/27610

ACKs for top commit:
  achow101:
    ACK 49a2d66f4e

Tree-SHA512: a1a7678e16136636ec8a232d12630529639bae3b577769b5a5fd204dda234a5e588f3d4dfebf4d7abe7111d13cc0714f9ccdea0a858fe821a7146e6a697308d3
2023-05-11 19:15:53 +01:00
fanquake 49a2d66f4e
doc: update manual pages for v25.0rc2 2023-05-11 18:27:32 +01:00
fanquake 3ea4a115c2
build: bump version to v25.0rc2 2023-05-11 18:22:01 +01:00
Anthony Towns 7ef71e30c9
net_processing: Boost inv trickle rate
If transactions are being added to the mempool at a rate faster than 7tx/s
(INVENTORY_BROADCAST_PER_SECOND) then peers' inventory_to_send queue can
become relatively large. If this happens, increase the number of txids
we include in an INV message (normally capped at 35) by 5 for each 1000
txids in the queue.

This will tend to clear a temporary excess out reasonably quickly; an
excess of 4000 invs to send will be cleared down to 1000 in about 30
minutes, while an excess of 20000 invs would be cleared down to 1000 in
about 60 minutes.

Github-Pull: #27610
Rebased-From: 5b3406094f
2023-05-11 14:30:20 +01:00
Anthony Towns 1adbcd302f
txmempool: have CompareDepthAndScore sort missing txs first
We use CompareDepthAndScore to choose an order of txs to inv. Rather
than sorting txs that have been evicted from the mempool at the end
of the list, sort them at the beginning so they are removed from
the queue immediately.

Github-Pull: #27610
Rebased-From: 228e9201ef
2023-05-11 14:29:54 +01:00
Suhas Daftuar 9a23079df3
p2p: Avoid prematurely clearing download state for other peers
Github-Pull: #27608
Rebased-From: 52e52071e0
2023-05-10 10:14:17 +01:00
fanquake fcdd7b9e53
Merge bitcoin/bitcoin#27517: qt: 25.0rc2 translations update
20c076d056 qt: 25.0rc2 translations update (Hennadii Stepanov)

Pull request description:

  This PR follows our [Release Process](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#before-every-release-candidate) and pulls the recent translations from the [Transifex.com](https://www.transifex.com/bitcoin/bitcoin) using the [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) tool.

  Unfortunately, it wasn't done before `v25.0rc1` tagging. Therefore, it is expected to be merged just before the `v25.0rc2` tag (I commit to keep this PR updated on a daily basis).

  All developers with non-English native languages are welcome to skim through their language translation files and look for any malicious content, such as "official technical support for a stuck transaction", etc.

ACKs for top commit:
  jarolrod:
    ACK 20c076d056

Tree-SHA512: a96856b059ec8e2d05eb03f7b2d6505e8fe384e7139e0ad7781b38e4f90b37ec8cb89d822a10467a45e5397d5fe82bb68d5675b6ad9749df71e8c219a28f901a
2023-05-09 14:52:01 +01:00
Hennadii Stepanov 20c076d056
qt: 25.0rc2 translations update 2023-05-03 21:03:14 +01:00
Andrew Chow 079957d2ba
Merge bitcoin/bitcoin#27504: [25.x] Bump version to 25.0rc1
cf5850688d doc: generate example bitcoin.conf for v25.0rc1 (fanquake)
51af8957c5 doc: generate manual pages for v25.0rc1 (fanquake)
46accc7617 doc: point release-notes.md to the dev wiki (fanquake)
7a807eb735 doc: update version number in bips.md to v25.0 (fanquake)
0ff26b8c0f build: bump version to v25.0rc1 (fanquake)

Pull request description:

  Bump the version number.
  Generate the man pages.
  Generate example bitcoin.conf.
  Point release-notes.md to the wiki: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/25.0-Release-Notes-Draft.
  Bump the version number in bips.md.

ACKs for top commit:
  achow101:
    ACK cf5850688d

Tree-SHA512: 0f8065b33aff8d39f5ab969eea22c0161ebc984cff90f0f9496706af3b1199f4c8ec06e67d7db68cf103550f0d1f5c0f1aba493acf27f65f341f7865b152b293
2023-04-20 16:39:59 -04:00
fanquake cf5850688d
doc: generate example bitcoin.conf for v25.0rc1 2023-04-20 21:24:16 +01:00
fanquake 51af8957c5
doc: generate manual pages for v25.0rc1 2023-04-20 21:24:16 +01:00
fanquake 46accc7617
doc: point release-notes.md to the dev wiki 2023-04-20 21:24:04 +01:00
fanquake 7a807eb735
doc: update version number in bips.md to v25.0 2023-04-20 21:24:04 +01:00
fanquake 0ff26b8c0f
build: bump version to v25.0rc1 2023-04-20 21:24:04 +01:00
181 changed files with 113056 additions and 34858 deletions

View File

@ -193,15 +193,13 @@ task:
task:
name: 'ARM [unit tests, no functional tests] [bullseye]'
<< : *GLOBAL_TASK_TEMPLATE
arm_container:
image: debian:bullseye
cpu: 2
memory: 8G
# docker_arguments: # Can use dockerfile after https://github.com/cirruslabs/cirrus-ci-docs/issues/1154
container:
docker_arguments:
CI_IMAGE_NAME_TAG: debian:bullseye
FILE_ENV: "./ci/test/00_setup_env_arm.sh"
<< : *CREDITS_TEMPLATE
env:
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
FILE_ENV: "./ci/test/00_setup_env_arm.sh"
QEMU_USER_CMD: "" # Disable qemu and run the test natively
task:
name: 'Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]'
@ -246,6 +244,7 @@ task:
docker_arguments:
CI_IMAGE_NAME_TAG: ubuntu:lunar
FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh"
<< : *CREDITS_TEMPLATE
env:
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
@ -345,21 +344,3 @@ task:
CI_USE_APT_INSTALL: "no"
PACKAGE_MANAGER_INSTALL: "echo" # Nothing to do
FILE_ENV: "./ci/test/00_setup_env_mac_native_arm64.sh"
task:
name: 'ARM64 Android APK [jammy]'
<< : *CONTAINER_DEPENDS_TEMPLATE
container:
docker_arguments:
CI_IMAGE_NAME_TAG: ubuntu:jammy
FILE_ENV: "./ci/test/00_setup_env_android.sh"
<< : *CREDITS_TEMPLATE
android_sdk_cache:
folder: "depends/SDKs/android"
fingerprint_key: "ANDROID_API_LEVEL=28 ANDROID_BUILD_TOOLS_VERSION=28.0.3 ANDROID_NDK_VERSION=23.2.8568313"
depends_sources_cache:
folder: "depends/sources"
fingerprint_script: git rev-parse HEAD:depends/packages
<< : *MAIN_TEMPLATE
env:
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV

View File

@ -12,6 +12,7 @@ export CI_IMAGE_NAME_TAG=ubuntu:20.04
export PACKAGES="cmake python3 llvm clang g++-multilib"
export DEP_OPTS="DEBUG=1 MULTIPROCESS=1"
export GOAL="install"
export BITCOIN_CONFIG="--enable-debug CC='clang -m32' CXX='clang++ -m32' LDFLAGS='--rtlib=compiler-rt -lgcc_s'"
export BITCOIN_CONFIG="--enable-debug CC='clang -m32' CXX='clang++ -m32' \
LDFLAGS='--rtlib=compiler-rt -lgcc_s' CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE'"
export TEST_RUNNER_ENV="BITCOIND=bitcoin-node"
export TEST_RUNNER_EXTRA="--nosandbox"

View File

@ -17,7 +17,7 @@ export PACKAGES="clang-16 llvm-16 libclang-rt-16-dev cmake"
# BDB generates false-positives and will be removed in future
export DEP_OPTS="NO_BDB=1 NO_QT=1 CC='clang' CXX='clang++' CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
export GOAL="install"
export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,memory --disable-hardening --with-asm=no CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,memory --disable-hardening --with-asm=no CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
export USE_MEMORY_SANITIZER="true"
export RUN_UNIT_TESTS="false"
export RUN_FUNCTIONAL_TESTS="false"

View File

@ -17,5 +17,5 @@ export RUN_UNIT_TESTS="false"
export GOAL="install"
export NO_WERROR=1
export DOWNLOAD_PREVIOUS_RELEASES="true"
export BITCOIN_CONFIG="--enable-zmq --with-libs=no --with-gui=qt5 --enable-reduce-exports \
--enable-debug CFLAGS=\"-g0 -O2 -funsigned-char\" CXXFLAGS=\"-g0 -O2 -funsigned-char\" CC=gcc-8 CXX=g++-8"
export BITCOIN_CONFIG="--enable-zmq --with-libs=no --with-gui=qt5 --enable-reduce-exports --enable-debug \
CFLAGS=\"-g0 -O2 -funsigned-char\" CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE' CXXFLAGS=\"-g0 -O2 -funsigned-char\" CC=gcc-8 CXX=g++-8"

View File

@ -40,7 +40,9 @@ if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
if [ -n "${RESTART_CI_DOCKER_BEFORE_RUN}" ] ; then
echo "Restart docker before run to stop and clear all containers started with --rm"
systemctl restart docker
podman container stop --all # Similar to "systemctl restart docker"
echo "Prune all dangling images"
docker image prune --force
fi
# shellcheck disable=SC2086

View File

@ -1,9 +1,9 @@
AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR, 25)
define(_CLIENT_VERSION_MINOR, 99)
define(_CLIENT_VERSION_MINOR, 2)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_RC, 0)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2023)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
@ -1482,10 +1482,6 @@ if test "$use_boost" = "yes"; then
AX_CHECK_PREPROC_FLAG([-DBOOST_NO_CXX98_FUNCTION_BASE], [BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_CXX98_FUNCTION_BASE"], [], [$CXXFLAG_WERROR],
[AC_LANG_PROGRAM([[#include <boost/config.hpp>]])])
if test "$enable_debug" = "yes" || test "$enable_fuzz" = "yes"; then
BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE"
fi
if test "$suppress_external_warnings" != "no"; then
BOOST_CPPFLAGS=SUPPRESS_WARNINGS($BOOST_CPPFLAGS)
fi

View File

@ -1,8 +1,8 @@
-----BEGIN CERTIFICATE-----
MIIHfDCCBWSgAwIBAgIQCmVvdQal72U2QxbUTT3SRTANBgkqhkiG9w0BAQsFADBp
MIIHeTCCBWGgAwIBAgIQBzR46J2yq3g++NbQS/BBVDANBgkqhkiG9w0BAQsFADBp
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0
IDIwMjEgQ0ExMB4XDTIyMDUyNDAwMDAwMFoXDTI0MDUyOTIzNTk1OVowgYAxCzAJ
IDIwMjEgQ0ExMB4XDTI0MDUyMjAwMDAwMFoXDTI3MDUzMTIzNTk1OVowgYAxCzAJ
BgNVBAYTAlVTMREwDwYDVQQIEwhEZWxhd2FyZTEOMAwGA1UEBxMFTGV3ZXMxJjAk
BgNVBAoTHUJpdGNvaW4gQ29yZSBDb2RlIFNpZ25pbmcgTExDMSYwJAYDVQQDEx1C
aXRjb2luIENvcmUgQ29kZSBTaWduaW5nIExMQzCCAiIwDQYJKoZIhvcNAQEBBQAD
@ -17,28 +17,28 @@ CDvScIgnQXmk+cbKMBtg9kM0F+aLWsN2xVf0uAj3U7sdXLrfJeW0DZIktWtTBQzX
O/OE4Ka+1WFnDg0HJIih0cTjl9YYvfe53L4pCGy+qGt/XGBRqCMfXp3g+H9FGR5r
pensVVcsrv3GbTfYdlpdmp9OHH5G57GTAZueobCZg7r7RKK0zPU9EiTLJxzyXuai
v/Ksd8eIhHRjewMaQuAtQM1tO+oKAbLF0v2M7v7/aVT76X32JllYAizm3zjvAgMB
AAGjggIGMIICAjAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNV
HQ4EFgQUvCpU58PIuofv0kHJ3Ty0YDKEy3cwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud
JQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwz
LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5
NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5j
b20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIx
Q0ExLmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRw
Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsG
AAGjggIDMIIB/zAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNV
HQ4EFgQUvCpU58PIuofv0kHJ3Ty0YDKEy3cwPgYDVR0gBDcwNTAzBgZngQwBBAEw
KTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1Ud
DwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzCBtQYDVR0fBIGtMIGqMFOg
UaBPhk1odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRD
b2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDBToFGgT4ZNaHR0cDov
L2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdS
U0E0MDk2U0hBMzg0MjAyMUNBMS5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsG
AQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0
dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVT
aWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJ
KoZIhvcNAQELBQADggIBABhpTZufRws1vrtI0xB1/UWrSEJxdPHivfpXE708dzum
Jh3TFzpsEUCQX5BJJet1l7x92sKNeAL7votA+8O8YvMD64Kim7VKA2BB8AOHKQbp
r1c2iZBwwofInviRYvsrvQta6KBy2KOe1L/l0KnpUazL9Tv4VKvuWAw/Qc0/eTQr
NZRsmADORxnZ1qW+SpF+/WbazIYjod/Oqb1U3on+PzyiGD3SjzNhsdFRptqzrIaY
UVV+2XHG4fN6A8wkyQL5NIVXGiK7rqS5VrRAv58Lf1ZZTghdAL+5SySE0OsR9t0K
W73ZB9pxbuZZ6Zfxjotjw+IilCEm3ADbc7Eb2ijI4x8mix0XWMUrhL34s7/jRyDi
P+30aSgjWp611tp/EYRW5kpIaFR8AesDdM0DSSCCRXOMwQG2Tq2+CnqItB5oLNPp
2XySwlIWvmjbzsREfIpE3yh3bxmHY+vFIc2R0nNkbWNIT6AGtaEQ7oWkgpK8YMkA
QCf4EUC4Qa7qHiH6YSmYJhjApBLC7UDwevgwxuDrwimWAj+tDkzdnENMcBp4SAy6
LwUuDi2IU6HRSXWdh2YEkDbc3FdwknnnEWaB4dlRL85YjHyLXN0KiE7SKTj1LfR4
dGeDqVUlDj9D5+X4a7F89wLP/um40/52HUQv5t5WcNr/47r9aVkx9DHs1b8oUnLg
aWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZI
hvcNAQELBQADggIBADdniG9IY9oOfw1e3+uc2lR4hoZqquJQRrCnbWJ1npnCTavI
CfcEEMuQ5ztg4TR7tQNj2KcaHWKuPYxEz2bg8HpSPG27lnXaz4pLgfqvjdZWNH2v
W6DGRUAwuMQHSV0qhuRcJPZuhwSFx/8y4r++jIcBxCbt/Jprt/bqc8vZZZzTDPfG
M6cGaKMDvF//OkUPVzh4s557kV7+LoaX8CigiACZky3Zj3tkQfJYkEvdQseNvX49
CMJ+cjN+fGweshbn/DszAT5oXW5l2PXeceyGrE+5Ex1ELXCPqNj8ZSn+S9IKZOag
zDFBA93RTVD438peXPz//xgusgnmSqSPS5tCp9KSvew81acu4v/+egg9EgSSx5Ho
9fkOX7JuygvN3r3UZqsddxdwf2dPvBDYlMdieF8qsR7H5DQPQoaTVrIhW4TFtJl/
UPjVlnDwu+yvMC70F+CaVgQs01uZ0VKuG3KNkkEj6+V/SM54NVVgcY/Q7llKIFA8
Qk8Ip8/83cVBptKW+OU+i2ZwoYskLbdfDE31X2knUIouNZgBBMhzc5WjJCEGXAPm
9xYZMn87cc+ejxCw6/WC4b6tDCziO8drq76Pl6LTNPOtRkEVqt12p8Uqi9PgznUB
bdHeoF5XHt1Ca2ySpSYuMz5djwIC2ws8kiMm44/AyTm6dwRcesiOTqnaRc+t
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGsDCCBJigAwIBAgIQCK1AsmDSnEyfXs2pvZOu2TANBgkqhkiG9w0BAQwFADBi

View File

@ -22,6 +22,8 @@ $(package)_patches += rcc_hardcode_timestamp.patch
$(package)_patches += duplicate_lcqpafonts.patch
$(package)_patches += fast_fixed_dtoa_no_optimize.patch
$(package)_patches += guix_cross_lib_path.patch
$(package)_patches += fix-macos-linker.patch
$(package)_patches += memory_resource.patch
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
$(package)_qttranslations_sha256_hash=c92af4171397a0ed272330b4fa0669790fcac8d050b07c8b8cc565ebeba6735e
@ -238,6 +240,7 @@ endef
define $(package)_preprocess_cmds
cp $($(package)_patch_dir)/qt.pro qt.pro && \
cp $($(package)_patch_dir)/qttools_src.pro qttools/src/src.pro && \
patch -p1 -i $($(package)_patch_dir)/fix-macos-linker.patch && \
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_qt_pkgconfig.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_android_jni_static.patch && \
@ -246,6 +249,7 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_montery_include.patch && \
patch -p1 -i $($(package)_patch_dir)/use_android_ndk23.patch && \
patch -p1 -i $($(package)_patch_dir)/memory_resource.patch && \
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
patch -p1 -i $($(package)_patch_dir)/duplicate_lcqpafonts.patch && \
patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \

View File

@ -1,8 +1,8 @@
package=xcb_proto
$(package)_version=1.14.1
$(package)_version=1.15.2
$(package)_download_path=https://xorg.freedesktop.org/archive/individual/proto
$(package)_file_name=xcb-proto-$($(package)_version).tar.xz
$(package)_sha256_hash=f04add9a972ac334ea11d9d7eb4fc7f8883835da3e4859c9afa971efdf57fcc3
$(package)_sha256_hash=7072beb1f680a2fe3f9e535b797c146d22528990c72f63ddb49d2f350a3653ed
define $(package)_config_cmds
$($(package)_autoconf)

View File

@ -0,0 +1,55 @@
qmake: Don't error out if QMAKE_DEFAULT_LIBDIRS is empty on macOS
The new linker in Xcode 15 doesn't provide any default linker or
framework paths when requested via -v, but still seems to use the
default paths documented in the ld man page.
We trust that linker will do the right thing, even if we don't
know of its default linker paths.
We also need to opt out of the default fallback logic to
set the libdirs to /lib and /usr/lib.
This may result in UnixMakefileGenerator::findLibraries finding
different libraries than expected, if additional paths are
passed with -L, which will then take precedence for qmake,
even if the linker itself will use the library from the
SDK's default paths. This should hopefully not be an issue
in practice, as we don't turn -lFoo into absolute paths in
qmake, so the only risk is that we're picking up the wrong
prl files and adding additional dependencies that the lib
in the SDK doesn't have.
Upstream commits:
- Qt 5.15.16: Not yet publicly available.
- Qt dev: cdf64b0e47115cc473e1afd1472b4b09e130b2a5
For other Qt branches see
https://codereview.qt-project.org/q/I2347b26e2df0828471373b0e15b8c9089274c65d
--- old/qtbase/mkspecs/features/toolchain.prf
+++ new/qtbase/mkspecs/features/toolchain.prf
@@ -283,9 +283,12 @@ isEmpty($${target_prefix}.INCDIRS) {
}
}
}
- isEmpty(QMAKE_DEFAULT_LIBDIRS)|isEmpty(QMAKE_DEFAULT_INCDIRS): \
+ isEmpty(QMAKE_DEFAULT_INCDIRS): \
!integrity: \
- error("failed to parse default search paths from compiler output")
+ error("failed to parse default include paths from compiler output")
+ isEmpty(QMAKE_DEFAULT_LIBDIRS): \
+ !integrity:!darwin: \
+ error("failed to parse default library paths from compiler output")
QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS)
} else: ghs {
cmd = $$QMAKE_CXX $$QMAKE_CXXFLAGS -$${LITERAL_HASH} -o /tmp/fake_output /tmp/fake_input.cpp
@@ -407,7 +410,7 @@ isEmpty($${target_prefix}.INCDIRS) {
QMAKE_DEFAULT_INCDIRS = $$split(INCLUDE, $$QMAKE_DIRLIST_SEP)
}
- unix:if(!cross_compile|host_build) {
+ unix:!darwin:if(!cross_compile|host_build) {
isEmpty(QMAKE_DEFAULT_INCDIRS): QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include
isEmpty(QMAKE_DEFAULT_LIBDIRS): QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib
}

View File

@ -0,0 +1,49 @@
Fix unusable memory_resource on macos
See https://bugreports.qt.io/browse/QTBUG-117484
and https://bugreports.qt.io/browse/QTBUG-114316
--- a/qtbase/src/corelib/tools/qduplicatetracker_p.h
+++ b/qtbase/src/corelib/tools/qduplicatetracker_p.h
@@ -52,7 +52,7 @@
#include <qglobal.h>
-#if QT_HAS_INCLUDE(<memory_resource>) && __cplusplus > 201402L
+#ifdef __cpp_lib_memory_resource
# include <unordered_set>
# include <memory_resource>
#else
--- a/qtbase/src/corelib/global/qcompilerdetection.h
+++ b/qtbase/src/corelib/global/qcompilerdetection.h
@@ -1041,16 +1041,22 @@
# endif // !_HAS_CONSTEXPR
# endif // !__GLIBCXX__ && !_LIBCPP_VERSION
# endif // Q_OS_QNX
-# if (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC) && defined(__GNUC_LIBSTD__) \
- && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
+# if (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC)
+# if defined(__GNUC_LIBSTD__) && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
// Apple has not updated libstdc++ since 2007, which means it does not have
// <initializer_list> or std::move. Let's disable these features
-# undef Q_COMPILER_INITIALIZER_LISTS
-# undef Q_COMPILER_RVALUE_REFS
-# undef Q_COMPILER_REF_QUALIFIERS
+# undef Q_COMPILER_INITIALIZER_LISTS
+# undef Q_COMPILER_RVALUE_REFS
+# undef Q_COMPILER_REF_QUALIFIERS
// Also disable <atomic>, since it's clearly not there
-# undef Q_COMPILER_ATOMICS
-# endif
+# undef Q_COMPILER_ATOMICS
+# endif
+# if defined(__cpp_lib_memory_resource) \
+ && ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 140000) \
+ || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 170000))
+# undef __cpp_lib_memory_resource // Only supported on macOS 14 and iOS 17
+# endif
+# endif // (defined(Q_CC_CLANG) || defined(Q_CC_INTEL)) && defined(Q_OS_MAC)
# if defined(Q_CC_CLANG) && defined(Q_CC_INTEL) && Q_CC_INTEL >= 1500
// ICC 15.x and 16.0 have their own implementation of std::atomic, which is activated when in Clang mode
// (probably because libc++'s <atomic> on OS X failed to compile), but they're missing some

View File

@ -1,4 +1,4 @@
BIPs that are implemented by Bitcoin Core (up-to-date up to **v24.0**):
BIPs that are implemented by Bitcoin Core (up-to-date up to **v25.2**):
* [`BIP 9`](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/bitcoin/bitcoin/pull/7575))
* [`BIP 11`](https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)).

View File

@ -1,5 +1,181 @@
.TH BITCOIN-CLI "1"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-CLI "1" "April 2024" "bitcoin-cli v25.2.0" "User Commands"
.SH NAME
bitcoin-cli \- manual page for bitcoin-cli
bitcoin-cli \- manual page for bitcoin-cli v25.2.0
.SH SYNOPSIS
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR
.br
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,-named <command> \/\fR[\fI\,name=value\/\fR]... \fI\,Send command to Bitcoin Core (with named arguments)\/\fR
.br
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help List commands\/\fR
.br
.B bitcoin-cli
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
.SH DESCRIPTION
Bitcoin Core RPC client version v25.2.0
.SH OPTIONS
.HP
\-?
.IP
Print this help message and exit
.HP
\fB\-addrinfo\fR
.IP
Get the number of addresses known to the node, per network and total,
after filtering for quality and recency. The total number of
addresses known to the node may be higher.
.HP
\fB\-color=\fR<when>
.IP
Color setting for CLI output (default: auto). Valid values: always, auto
(add color codes when standard output is connected to a terminal
and OS is not WIN32), never.
.HP
\fB\-conf=\fR<file>
.IP
Specify configuration file. Relative paths will be prefixed by datadir
location. (default: bitcoin.conf)
.HP
\fB\-datadir=\fR<dir>
.IP
Specify data directory
.HP
\fB\-generate\fR
.IP
Generate blocks, equivalent to RPC getnewaddress followed by RPC
generatetoaddress. Optional positional integer arguments are
number of blocks to generate (default: 1) and maximum iterations
to try (default: 1000000), equivalent to RPC generatetoaddress
nblocks and maxtries arguments. Example: bitcoin\-cli \fB\-generate\fR 4
1000
.HP
\fB\-getinfo\fR
.IP
Get general information from the remote server. Note that unlike
server\-side RPC calls, the output of \fB\-getinfo\fR is the result of
multiple non\-atomic requests. Some entries in the output may
represent results from different states (e.g. wallet balance may
be as of a different block from the chain state reported)
.HP
\fB\-named\fR
.IP
Pass named instead of positional arguments (default: false)
.HP
\fB\-netinfo\fR
.IP
Get network peer connection information from the remote server. An
optional integer argument from 0 to 4 can be passed for different
peers listings (default: 0). Pass "help" for detailed help
documentation.
.HP
\fB\-rpcclienttimeout=\fR<n>
.IP
Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
900)
.HP
\fB\-rpcconnect=\fR<ip>
.IP
Send commands to node running on <ip> (default: 127.0.0.1)
.HP
\fB\-rpccookiefile=\fR<loc>
.IP
Location of the auth cookie. Relative paths will be prefixed by a
net\-specific datadir location. (default: data dir)
.HP
\fB\-rpcpassword=\fR<pw>
.IP
Password for JSON\-RPC connections
.HP
\fB\-rpcport=\fR<port>
.IP
Connect to JSON\-RPC on <port> (default: 8332, testnet: 18332, signet:
38332, regtest: 18443)
.HP
\fB\-rpcuser=\fR<user>
.IP
Username for JSON\-RPC connections
.HP
\fB\-rpcwait\fR
.IP
Wait for RPC server to start
.HP
\fB\-rpcwaittimeout=\fR<n>
.IP
Timeout in seconds to wait for the RPC server to start, or 0 for no
timeout. (default: 0)
.HP
\fB\-rpcwallet=\fR<walletname>
.IP
Send RPC for non\-default wallet on RPC server (needs to exactly match
corresponding \fB\-wallet\fR option passed to bitcoind). This changes
the RPC endpoint used, e.g.
http://127.0.0.1:8332/wallet/<walletname>
.HP
\fB\-stdin\fR
.IP
Read extra arguments from standard input, one per line until EOF/Ctrl\-D
(recommended for sensitive information such as passphrases). When
combined with \fB\-stdinrpcpass\fR, the first line from standard input
is used for the RPC password.
.HP
\fB\-stdinrpcpass\fR
.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. When combined with \fB\-stdinwalletpassphrase\fR,
\fB\-stdinrpcpass\fR consumes the first line, and \fB\-stdinwalletpassphrase\fR
consumes the second.
.HP
\fB\-stdinwalletpassphrase\fR
.IP
Read wallet passphrase from standard input as a single line. When
combined with \fB\-stdin\fR, the first line from standard input is used
for the wallet passphrase.
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.SH COPYRIGHT
Copyright (C) 2009-2023 The Bitcoin Core developers
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

View File

@ -1,5 +1,820 @@
.TH BITCOIN-QT "1"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-QT "1" "April 2024" "bitcoin-qt v25.2.0" "User Commands"
.SH NAME
bitcoin-qt \- manual page for bitcoin-qt
bitcoin-qt \- manual page for bitcoin-qt v25.2.0
.SH SYNOPSIS
.B bitcoin-qt
[\fI\,command-line options\/\fR]
.SH DESCRIPTION
Bitcoin Core version v25.2.0
.SH OPTIONS
.HP
\-?
.IP
Print this help message and exit
.HP
\fB\-alertnotify=\fR<cmd>
.IP
Execute command when an alert is raised (%s in cmd is replaced by
message)
.HP
\fB\-assumevalid=\fR<hex>
.IP
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:
000000000000000000035c3f0d31e71a5ee24c5aaf3354689f65bd7b07dee632,
testnet:
0000000000000021bc50a89cde4870d4a81ffe0153b3c8de77b435a2fd3f6761,
signet:
0000004429ef154f7e00b4f6b46bfbe2d2678ecd351d95bbfca437ab9a5b84ec)
.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
Execute command when the best block changes (%s in cmd is replaced by
block hash)
.HP
\fB\-blockreconstructionextratxn=\fR<n>
.IP
Extra transactions to keep in memory for compact block reconstructions
(default: 100)
.HP
\fB\-blocksdir=\fR<dir>
.IP
Specify directory to hold blocks subdirectory for *.dat files (default:
<datadir>)
.HP
\fB\-blocksonly\fR
.IP
Whether to reject transactions from network peers. Automatic broadcast
and rebroadcast of any transactions from inbound peers is
disabled, unless the peer has the 'forcerelay' permission. RPC
transactions are not affected. (default: 0)
.HP
\fB\-coinstatsindex\fR
.IP
Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
Specify path to read\-only configuration file. Relative paths will be
prefixed by datadir location (only useable from command line, not
configuration file) (default: bitcoin.conf)
.HP
\fB\-daemon\fR
.IP
Run in the background as a daemon and accept commands (default: 0)
.HP
\fB\-daemonwait\fR
.IP
Wait for initialization to be finished before exiting. This implies
\fB\-daemon\fR (default: 0)
.HP
\fB\-datadir=\fR<dir>
.IP
Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
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
Specify location of debug log file (default: debug.log). Relative paths
will be prefixed by a net\-specific datadir location. Pass
\fB\-nodebuglogfile\fR to disable writing the log to a file.
.HP
\fB\-includeconf=\fR<file>
.IP
Specify additional configuration file, relative to the \fB\-datadir\fR path
(only useable from configuration file, not command line)
.HP
\fB\-loadblock=\fR<file>
.IP
Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
Keep the transaction memory pool below <n> megabytes (default: 300)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
.HP
\fB\-mempoolexpiry=\fR<n>
.IP
Do not keep transactions in the mempool longer than <n> hours (default:
336)
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-64\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
.IP
Whether to save the mempool on shutdown and load on restart (default: 1)
.HP
\fB\-pid=\fR<file>
.IP
Specify pid file. Relative paths will be prefixed by a net\-specific
datadir location. (default: bitcoind.pid)
.HP
\fB\-prune=\fR<n>
.IP
Reduce storage requirements by enabling pruning (deleting) of old
blocks. This allows the pruneblockchain RPC to be called to
delete specific blocks and enables automatic pruning of old
blocks if a target size in MiB is provided. This mode is
incompatible with \fB\-txindex\fR. Warning: Reverting this setting
requires re\-downloading the entire blockchain. (default: 0 =
disable pruning blocks, 1 = allow manual pruning via RPC, >=550 =
automatically prune block files to stay under the specified
target size in MiB)
.HP
\fB\-reindex\fR
.IP
Rebuild chain state and block index from the blk*.dat files on disk.
This will also rebuild active optional indexes.
.HP
\fB\-reindex\-chainstate\fR
.IP
Rebuild chain state from the currently indexed blocks. When in pruning
mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
instead. Deactivate all optional indexes before running this.
.HP
\fB\-sandbox=\fR<mode>
.IP
Use the experimental syscall sandbox in the specified mode
(\fB\-sandbox\fR=\fI\,log\-and\-abort\/\fR or \fB\-sandbox\fR=\fI\,abort\/\fR). Allow only expected
syscalls to be used by bitcoind. Note that this is an
experimental new feature that may cause bitcoind to exit or crash
unexpectedly: use with caution. In the "log\-and\-abort" mode the
invocation of an unexpected syscall results in a debug handler
being invoked which will log the incident and terminate the
program (without executing the unexpected syscall). In the
"abort" mode the invocation of an unexpected syscall results in
the entire process being killed immediately by the kernel without
executing the unexpected syscall.
.HP
\fB\-settings=\fR<file>
.IP
Specify path to dynamic settings data file. Can be disabled with
\fB\-nosettings\fR. File is written at runtime and not meant to be
edited by users (use bitcoin.conf instead for custom settings).
Relative paths will be prefixed by datadir location. (default:
settings.json)
.HP
\fB\-shutdownnotify=\fR<cmd>
.IP
Execute command immediately before beginning shutdown. The need for
shutdown may be urgent, so be careful not to delay it long (if
the command doesn't require interaction with the server, consider
having it fork into the background).
.HP
\fB\-startupnotify=\fR<cmd>
.IP
Execute command on startup.
.HP
\fB\-txindex\fR
.IP
Maintain a full transaction index, used by the getrawtransaction rpc
call (default: 0)
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Connection options:
.HP
\fB\-addnode=\fR<ip>
.IP
Add a node to connect to and attempt to keep the connection open (see
the addnode RPC help for more info). This option can be specified
multiple times to add multiple nodes; connections are limited to
8 at a time and are counted separately from the \fB\-maxconnections\fR
limit.
.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\-bantime=\fR<n>
.IP
Default duration (in seconds) of manually configured bans (default:
86400)
.HP
\fB\-bind=\fR<addr>[:<port>][=onion]
.IP
Bind to given address and always listen on it (default: 0.0.0.0). Use
[host]:port notation for IPv6. Append =onion to tag any incoming
connections to that address and port as incoming Tor connections
(default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
.HP
\fB\-cjdnsreachable\fR
.IP
If set, then this host is configured for CJDNS (connecting to fc00::/8
addresses would lead us to the CJDNS network, see doc/cjdns.md)
(default: 0)
.HP
\fB\-connect=\fR<ip>
.IP
Connect only to the specified node; \fB\-noconnect\fR disables automatic
connections (the rules for this peer are the same as for
\fB\-addnode\fR). This option can be specified multiple times to connect
to multiple nodes.
.HP
\fB\-discover\fR
.IP
Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
or \fB\-proxy\fR)
.HP
\fB\-dns\fR
.IP
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
.HP
\fB\-dnsseed\fR
.IP
Query for peer addresses via DNS lookup, if low on addresses (default: 1
unless \fB\-connect\fR used or \fB\-maxconnections\fR=\fI\,0\/\fR)
.HP
\fB\-externalip=\fR<ip>
.IP
Specify your own public address
.HP
\fB\-fixedseeds\fR
.IP
Allow fixed seeds if DNS seeds don't provide peers (default: 1)
.HP
\fB\-forcednsseed\fR
.IP
Always query for peer addresses via DNS lookup (default: 0)
.HP
\fB\-i2pacceptincoming\fR
.IP
Whether to accept inbound I2P connections (default: 1). Ignored if
\fB\-i2psam\fR is not set. Listening for inbound I2P connections is done
through the SAM proxy, not by binding to a local address and
port.
.HP
\fB\-i2psam=\fR<ip:port>
.IP
I2P SAM proxy to reach I2P peers and accept I2P connections (default:
none)
.HP
\fB\-listen\fR
.IP
Accept connections from outside (default: 1 if no \fB\-proxy\fR, \fB\-connect\fR or
\fB\-maxconnections\fR=\fI\,0\/\fR)
.HP
\fB\-listenonion\fR
.IP
Automatically create Tor onion service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
Maintain at most <n> connections to peers (default: 125). This limit
does not apply to connections manually added via \fB\-addnode\fR or the
addnode RPC, which have a separate limit of 8.
.HP
\fB\-maxreceivebuffer=\fR<n>
.IP
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
.HP
\fB\-maxsendbuffer=\fR<n>
.IP
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
.HP
\fB\-maxtimeadjustment\fR
.IP
Maximum allowed median peer time offset adjustment. Local perspective of
time may be influenced by outbound peers forward or backward by
this amount (default: 4200 seconds).
.HP
\fB\-maxuploadtarget=\fR<n>
.IP
Tries to keep outbound traffic under the given target per 24h. Limit
does not apply to peers with 'download' permission or blocks
created within past week. 0 = no limit (default: 0M). Optional
suffix units [k|K|m|M|g|G|t|T] (default: M). Lowercase is 1000
base while uppercase is 1024 base
.HP
\fB\-natpmp\fR
.IP
Use NAT\-PMP to map the listening port (default: 0)
.HP
\fB\-networkactive\fR
.IP
Enable all P2P network activity (default: 1). Can be changed by the
setnetworkactive RPC command
.HP
\fB\-onion=\fR<ip:port>
.IP
Use separate SOCKS5 proxy to reach peers via Tor onion services, set
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
.HP
\fB\-onlynet=\fR<net>
.IP
Make automatic outbound connections only to network <net> (ipv4, ipv6,
onion, i2p, cjdns). Inbound and manual connections are not
affected by this option. It can be specified multiple times to
allow multiple networks.
.HP
\fB\-peerblockfilters\fR
.IP
Serve compact block filters to peers per BIP 157 (default: 0)
.HP
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
0)
.HP
\fB\-port=\fR<port>
.IP
Listen for connections on <port>. Nodes not using the default ports
(default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
are unlikely to get incoming connections. Not relevant for I2P
(see doc/i2p.md).
.HP
\fB\-proxy=\fR<ip:port>
.IP
Connect through SOCKS5 proxy, set \fB\-noproxy\fR to disable (default:
disabled)
.HP
\fB\-proxyrandomize\fR
.IP
Randomize credentials for every proxy connection. This enables Tor
stream isolation (default: 1)
.HP
\fB\-seednode=\fR<ip>
.IP
Connect to a node to retrieve peer addresses, and disconnect. This
option can be specified multiple times to connect to multiple
nodes.
.HP
\fB\-timeout=\fR<n>
.IP
Specify socket connection timeout in milliseconds. If an initial attempt
to connect is unsuccessful after this amount of time, drop it
(minimum: 1, default: 5000)
.HP
\fB\-torcontrol=\fR<ip>:<port>
.IP
Tor control port to use if onion listening enabled (default:
127.0.0.1:9051)
.HP
\fB\-torpassword=\fR<pass>
.IP
Tor control port password (default: empty)
.HP
\fB\-upnp\fR
.IP
Use UPnP to map the listening port (default: 1 when listening and no
\fB\-proxy\fR)
.HP
\fB\-whitebind=\fR<[permissions@]addr>
.IP
Bind to the given address and add permission flags to the peers
connecting to it. Use [host]:port notation for IPv6. Allowed
permissions: bloomfilter (allow requesting BIP37 filtered blocks
and transactions), noban (do not ban for misbehavior; implies
download), forcerelay (relay transactions that are already in the
mempool; implies relay), relay (relay even in \fB\-blocksonly\fR mode,
and unlimited transaction announcements), mempool (allow
requesting BIP35 mempool contents), download (allow getheaders
during IBD, no disconnect after maxuploadtarget limit), addr
(responses to GETADDR avoid hitting the cache and contain random
records with the most up\-to\-date info). Specify multiple
permissions separated by commas (default:
download,noban,mempool,relay). Can be specified multiple times.
.HP
\fB\-whitelist=\fR<[permissions@]IP address or network>
.IP
Add permission flags to the peers connecting from the given IP address
(e.g. 1.2.3.4) or CIDR\-notated network (e.g. 1.2.3.0/24). Uses
the same permissions as \fB\-whitebind\fR. Can be specified multiple
times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", "bech32", or
"bech32m", default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
Group outputs by address, selecting many (possibly all) or none, instead
of selecting on a per\-output basis. Privacy is improved as
addresses are mostly swept with fewer transactions and outputs
are aggregated in clean change addresses. It may result in higher
fees due to less optimal coin selection caused by this added
limitation and possibly a larger\-than\-necessary number of inputs
being used. Always enabled for wallets with "avoid_reuse"
enabled, otherwise default: 0.
.HP
\fB\-changetype\fR
.IP
What type of change to use ("legacy", "p2sh\-segwit", "bech32", or
"bech32m"). Default is "legacy" when \fB\-addresstype\fR=\fI\,legacy\/\fR, else it
is an implementation detail.
.HP
\fB\-consolidatefeerate=\fR<amt>
.IP
The maximum feerate (in BTC/kvB) at which transaction building may use
more inputs than strictly necessary so that the wallet's UTXO
pool can be reduced (default: 0.0001).
.HP
\fB\-disablewallet\fR
.IP
Do not load the wallet and disable wallet RPC calls
.HP
\fB\-discardfee=\fR<amt>
.IP
The fee rate (in BTC/kvB) that indicates your tolerance for discarding
change by adding it to the fee (default: 0.0001). Note: An output
is discarded if it is dust at this rate, but we will always
discard up to the dust relay fee and a discard fee above that is
limited by the fee estimate for the longest target
.HP
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kvB) that will be used when fee estimation has
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). Warning: Smaller sizes may
increase the risk of losing funds when restoring from an old
backup, if none of the addresses in the original keypool have
been used.
.HP
\fB\-maxapsfee=\fR<n>
.IP
Spend up to this amount in additional (absolute) fees (in BTC) if it
allows the use of partial spend avoidance (default: 0.00)
.HP
\fB\-mintxfee=\fR<amt>
.IP
Fee rates (in BTC/kvB) smaller than this are considered zero fee for
transaction creation (default: 0.00001)
.HP
\fB\-paytxfee=\fR<amt>
.IP
Fee rate (in BTC/kvB) to add to transactions you send (default: 0.00)
.HP
\fB\-signer=\fR<cmd>
.IP
External signing tool, see doc/external\-signer.md
.HP
\fB\-spendzeroconfchange\fR
.IP
Spend unconfirmed change when sending transactions (default: 1)
.HP
\fB\-txconfirmtarget=\fR<n>
.IP
If paytxfee is not set, include enough fee so transactions begin
confirmation on average within n blocks (default: 6)
.HP
\fB\-wallet=\fR<path>
.IP
Specify wallet path to load at startup. Can be used multiple times to
load multiple wallets. Path is to a directory containing wallet
data and log files. If the path is not absolute, it is
interpreted relative to <walletdir>. This only loads existing
wallets and does not create new ones. For backwards compatibility
this also accepts names of existing top\-level data files in
<walletdir>.
.HP
\fB\-walletbroadcast\fR
.IP
Make the wallet broadcast transactions (default: 1)
.HP
\fB\-walletdir=\fR<dir>
.IP
Specify directory to hold wallets (default: <datadir>/wallets if it
exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID, %w is replaced by wallet name, %b is replaced by the
hash of the block including the transaction (set to 'unconfirmed'
if the transaction is not included) and %h is replaced by the
block height (\fB\-1\fR if not included). %w is not currently
implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used
to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 1)
.PP
ZeroMQ notification options:
.HP
\fB\-zmqpubhashblock=\fR<address>
.IP
Enable publish hash block in <address>
.HP
\fB\-zmqpubhashblockhwm=\fR<n>
.IP
Set publish hash block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
\fB\-zmqpubhashtxhwm=\fR<n>
.IP
Set publish hash transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
\fB\-zmqpubrawblockhwm=\fR<n>
.IP
Set publish raw block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
.HP
\fB\-zmqpubrawtxhwm=\fR<n>
.IP
Set publish raw transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubsequence=\fR<address>
.IP
Enable publish hash block and tx sequence in <address>
.HP
\fB\-zmqpubsequencehwm=\fR<n>
.IP
Set publish hash sequence message high water mark (default: 1000)
.PP
Debugging/Testing options:
.HP
\fB\-debug=\fR<category>
.IP
Output debug and trace logging (default: \fB\-nodebug\fR, supplying <category>
is optional). If <category> is not supplied or if <category> = 1,
output all debug and trace logging. <category> can be: addrman,
bench, blockstorage, cmpctblock, coindb, estimatefee, http, i2p,
ipc, leveldb, libevent, mempool, mempoolrej, net, proxy, prune,
qt, rand, reindex, rpc, scan, selectcoins, tor, txreconciliation,
util, validation, walletdb, zmq. This option can be specified
multiple times to output multiple categories.
.HP
\fB\-debugexclude=\fR<category>
.IP
Exclude debug and trace logging for a category. Can be used in
conjunction with \fB\-debug\fR=\fI\,1\/\fR to output debug and trace logging for
all categories except the specified category. This option can be
specified multiple times to exclude multiple categories.
.HP
\fB\-help\-debug\fR
.IP
Print help message with debugging options and exit
.HP
\fB\-logips\fR
.IP
Include IP addresses in debug output (default: 0)
.HP
\fB\-logsourcelocations\fR
.IP
Prepend debug output with name of the originating source location
(source file, line number and function name) (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;
setting this too low may abort large transactions (default: 0.10)
.HP
\fB\-printtoconsole\fR
.IP
Send trace/debug info to console (default: 1 when no \fB\-daemon\fR. To disable
logging to file, set \fB\-nodebuglogfile\fR)
.HP
\fB\-shrinkdebugfile\fR
.IP
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
.HP
\fB\-uacomment=\fR<cmt>
.IP
Append comment to the user agent string
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
\fB\-bytespersigop\fR
.IP
Equivalent bytes per sigop in transactions for relay and mining
(default: 20)
.HP
\fB\-datacarrier\fR
.IP
Relay and mine data carrier transactions (default: 1)
.HP
\fB\-datacarriersize\fR
.IP
Maximum size of data in data carrier transactions we relay and mine
(default: 83)
.HP
\fB\-mempoolfullrbf\fR
.IP
Accept transaction replace\-by\-fee without requiring replaceability
signaling (default: 0)
.HP
\fB\-minrelaytxfee=\fR<amt>
.IP
Fees (in BTC/kvB) smaller than this are considered zero fee for
relaying, mining and transaction creation (default: 0.00001)
.HP
\fB\-permitbaremultisig\fR
.IP
Relay non\-P2SH multisig (default: 1)
.HP
\fB\-whitelistforcerelay\fR
.IP
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
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
\fB\-blockmaxweight=\fR<n>
.IP
Set maximum BIP141 block weight (default: 3996000)
.HP
\fB\-blockmintxfee=\fR<amt>
.IP
Set lowest fee rate (in BTC/kvB) for transactions to be included in
block creation. (default: 0.00001)
.PP
RPC server options:
.HP
\fB\-rest\fR
.IP
Accept public REST requests (default: 0)
.HP
\fB\-rpcallowip=\fR<ip>
.IP
Allow JSON\-RPC connections from specified source. Valid for <ip> are a
single IP (e.g. 1.2.3.4), a network/netmask (e.g.
1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
option can be specified multiple times
.HP
\fB\-rpcauth=\fR<userpw>
.IP
Username and HMAC\-SHA\-256 hashed password for JSON\-RPC connections. The
field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
canonical python script is included in share/rpcauth. The client
then connects normally using the
rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
option can be specified multiple times
.HP
\fB\-rpcbind=\fR<addr>[:port]
.IP
Bind to given address to listen for JSON\-RPC connections. Do not expose
the RPC server to untrusted networks such as the public internet!
This option is ignored unless \fB\-rpcallowip\fR is also passed. Port is
optional and overrides \fB\-rpcport\fR. Use [host]:port notation for
IPv6. This option can be specified multiple times (default:
127.0.0.1 and ::1 i.e., localhost)
.HP
\fB\-rpccookiefile=\fR<loc>
.IP
Location of the auth cookie. Relative paths will be prefixed by a
net\-specific datadir location. (default: data dir)
.HP
\fB\-rpcpassword=\fR<pw>
.IP
Password for JSON\-RPC connections
.HP
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
18332, signet: 38332, regtest: 18443)
.HP
\fB\-rpcserialversion\fR
.IP
Sets the serialization of raw transaction or block hex returned in
non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
.HP
\fB\-rpcthreads=\fR<n>
.IP
Set the number of threads to service RPC calls (default: 4)
.HP
\fB\-rpcuser=\fR<user>
.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
.PP
UI Options:
.HP
\fB\-choosedatadir\fR
.IP
Choose data directory on startup (default: 0)
.HP
\fB\-lang=\fR<lang>
.IP
Set language, for example "de_DE" (default: system locale)
.HP
\fB\-min\fR
.IP
Start minimized
.HP
\fB\-resetguisettings\fR
.IP
Reset all settings changed in the GUI
.HP
\fB\-splash\fR
.IP
Show splash screen on startup (default: 1)
.SH COPYRIGHT
Copyright (C) 2009-2023 The Bitcoin Core developers
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

View File

@ -1,5 +1,145 @@
.TH BITCOIN-TX "1"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-TX "1" "April 2024" "bitcoin-tx v25.2.0" "User Commands"
.SH NAME
bitcoin-tx \- manual page for bitcoin-tx
bitcoin-tx \- manual page for bitcoin-tx v25.2.0
.SH SYNOPSIS
.B bitcoin-tx
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR
.br
.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 v25.2.0
.SH OPTIONS
.HP
\-?
.IP
Print this help message and exit
.HP
\fB\-create\fR
.IP
Create new, empty TX.
.HP
\fB\-json\fR
.IP
Select JSON output
.HP
\fB\-txid\fR
.IP
Output only the hex\-encoded transaction id of the resultant transaction.
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
delin=N
.IP
Delete input N from TX
.IP
delout=N
.IP
Delete output N from TX
.IP
in=TXID:VOUT(:SEQUENCE_NUMBER)
.IP
Add input to TX
.IP
locktime=N
.IP
Set TX lock time to N
.IP
nversion=N
.IP
Set TX version to N
.IP
outaddr=VALUE:ADDRESS
.IP
Add address\-based output to TX
.IP
outdata=[VALUE:]DATA
.IP
Add data\-based output to TX
.IP
outmultisig=VALUE:REQUIRED:PUBKEYS:PUBKEY1:PUBKEY2:....[:FLAGS]
.IP
Add Pay To n\-of\-m Multi\-sig output to TX. n = REQUIRED, m = PUBKEYS.
Optionally add the "W" flag to produce a
pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
wrap the output in a pay\-to\-script\-hash.
.IP
outpubkey=VALUE:PUBKEY[:FLAGS]
.IP
Add pay\-to\-pubkey output to TX. Optionally add the "W" flag to produce a
pay\-to\-witness\-pubkey\-hash output. Optionally add the "S" flag to
wrap the output in a pay\-to\-script\-hash.
.IP
outscript=VALUE:SCRIPT[:FLAGS]
.IP
Add raw script output to TX. Optionally add the "W" flag to produce a
pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
wrap the output in a pay\-to\-script\-hash.
.IP
replaceable(=N)
.IP
Set RBF opt\-in sequence number for input N (if not provided, opt\-in all
available inputs)
.IP
sign=SIGHASH\-FLAGS
.IP
Add zero or more signatures to transaction. This command requires JSON
registers:prevtxs=JSON object, privatekeys=JSON object. See
signrawtransactionwithkey docs for format of sighash flags, JSON
objects.
.PP
Register Commands:
.IP
load=NAME:FILENAME
.IP
Load JSON file FILENAME into register NAME
.IP
set=NAME:JSON\-STRING
.IP
Set register NAME to given JSON\-STRING
.SH COPYRIGHT
Copyright (C) 2009-2023 The Bitcoin Core developers
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

View File

@ -1,5 +1,65 @@
.TH BITCOIN-UTIL "1"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-UTIL "1" "April 2024" "bitcoin-util v25.2.0" "User Commands"
.SH NAME
bitcoin-util \- manual page for bitcoin-util
bitcoin-util \- manual page for bitcoin-util v25.2.0
.SH SYNOPSIS
.B bitcoin-util
[\fI\,options\/\fR] [\fI\,commands\/\fR] \fI\,Do stuff\/\fR
.SH DESCRIPTION
Bitcoin Core bitcoin\-util utility version v25.2.0
.SH OPTIONS
.HP
\-?
.IP
Print this help message and exit
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Debugging/Testing options:
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
grind
.IP
Perform proof of work on hex header string
.SH COPYRIGHT
Copyright (C) 2009-2023 The Bitcoin Core developers
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

View File

@ -1,5 +1,121 @@
.TH BITCOIN-WALLET "1"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIN-WALLET "1" "April 2024" "bitcoin-wallet v25.2.0" "User Commands"
.SH NAME
bitcoin-wallet \- manual page for bitcoin-wallet
bitcoin-wallet \- manual page for bitcoin-wallet v25.2.0
.SH DESCRIPTION
Bitcoin Core bitcoin\-wallet version v25.2.0
.PP
bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
By default bitcoin\-wallet will act on wallets in the default mainnet wallet directory in the datadir.
To change the target wallet, use the \fB\-datadir\fR, \fB\-wallet\fR and \fB\-regtest\fR/\-signet/\-testnet arguments.
.SS "Usage:"
.IP
bitcoin\-wallet [options] <command>
.SH OPTIONS
.HP
\-?
.IP
Print this help message and exit
.HP
\fB\-datadir=\fR<dir>
.IP
Specify data directory
.HP
\fB\-descriptors\fR
.IP
Create descriptors wallet. Only for 'create'
.HP
\fB\-dumpfile=\fR<file name>
.IP
When used with 'dump', writes out the records to this file. When used
with 'createfromdump', loads the records into a new wallet.
.HP
\fB\-format=\fR<format>
.IP
The format of the wallet file to create. Either "bdb" or "sqlite". Only
used with 'createfromdump'
.HP
\fB\-legacy\fR
.IP
Create legacy wallet. Only for 'create'
.HP
\fB\-version\fR
.IP
Print version and exit
.HP
\fB\-wallet=\fR<wallet\-name>
.IP
Specify wallet name
.PP
Debugging/Testing options:
.HP
\fB\-debug=\fR<category>
.IP
Output debugging information (default: 0).
.HP
\fB\-printtoconsole\fR
.IP
Send trace/debug info to console (default: 1 when no \fB\-debug\fR is true, 0
otherwise).
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Commands:
.IP
create
.IP
Create new wallet file
.IP
createfromdump
.IP
Create new wallet file from dumped records
.IP
dump
.IP
Print out all of the wallet key\-value records
.IP
info
.IP
Get wallet info
.IP
salvage
.IP
Attempt to recover private keys from a corrupt wallet. Warning:
\&'salvage' is experimental.
.SH COPYRIGHT
Copyright (C) 2009-2023 The Bitcoin Core developers
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

View File

@ -1,5 +1,798 @@
.TH BITCOIND "1"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH BITCOIND "1" "April 2024" "bitcoind v25.2.0" "User Commands"
.SH NAME
bitcoind \- manual page for bitcoind
bitcoind \- manual page for bitcoind v25.2.0
.SH SYNOPSIS
.B bitcoind
[\fI\,options\/\fR] \fI\,Start Bitcoin Core\/\fR
.SH DESCRIPTION
Bitcoin Core version v25.2.0
.SH OPTIONS
.HP
\-?
.IP
Print this help message and exit
.HP
\fB\-alertnotify=\fR<cmd>
.IP
Execute command when an alert is raised (%s in cmd is replaced by
message)
.HP
\fB\-assumevalid=\fR<hex>
.IP
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:
000000000000000000035c3f0d31e71a5ee24c5aaf3354689f65bd7b07dee632,
testnet:
0000000000000021bc50a89cde4870d4a81ffe0153b3c8de77b435a2fd3f6761,
signet:
0000004429ef154f7e00b4f6b46bfbe2d2678ecd351d95bbfca437ab9a5b84ec)
.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
Execute command when the best block changes (%s in cmd is replaced by
block hash)
.HP
\fB\-blockreconstructionextratxn=\fR<n>
.IP
Extra transactions to keep in memory for compact block reconstructions
(default: 100)
.HP
\fB\-blocksdir=\fR<dir>
.IP
Specify directory to hold blocks subdirectory for *.dat files (default:
<datadir>)
.HP
\fB\-blocksonly\fR
.IP
Whether to reject transactions from network peers. Automatic broadcast
and rebroadcast of any transactions from inbound peers is
disabled, unless the peer has the 'forcerelay' permission. RPC
transactions are not affected. (default: 0)
.HP
\fB\-coinstatsindex\fR
.IP
Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0)
.HP
\fB\-conf=\fR<file>
.IP
Specify path to read\-only configuration file. Relative paths will be
prefixed by datadir location (only useable from command line, not
configuration file) (default: bitcoin.conf)
.HP
\fB\-daemon\fR
.IP
Run in the background as a daemon and accept commands (default: 0)
.HP
\fB\-daemonwait\fR
.IP
Wait for initialization to be finished before exiting. This implies
\fB\-daemon\fR (default: 0)
.HP
\fB\-datadir=\fR<dir>
.IP
Specify data directory
.HP
\fB\-dbcache=\fR<n>
.IP
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
Specify location of debug log file (default: debug.log). Relative paths
will be prefixed by a net\-specific datadir location. Pass
\fB\-nodebuglogfile\fR to disable writing the log to a file.
.HP
\fB\-includeconf=\fR<file>
.IP
Specify additional configuration file, relative to the \fB\-datadir\fR path
(only useable from configuration file, not command line)
.HP
\fB\-loadblock=\fR<file>
.IP
Imports blocks from external file on startup
.HP
\fB\-maxmempool=\fR<n>
.IP
Keep the transaction memory pool below <n> megabytes (default: 300)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
.HP
\fB\-mempoolexpiry=\fR<n>
.IP
Do not keep transactions in the mempool longer than <n> hours (default:
336)
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-64\fR to 15, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-persistmempool\fR
.IP
Whether to save the mempool on shutdown and load on restart (default: 1)
.HP
\fB\-pid=\fR<file>
.IP
Specify pid file. Relative paths will be prefixed by a net\-specific
datadir location. (default: bitcoind.pid)
.HP
\fB\-prune=\fR<n>
.IP
Reduce storage requirements by enabling pruning (deleting) of old
blocks. This allows the pruneblockchain RPC to be called to
delete specific blocks and enables automatic pruning of old
blocks if a target size in MiB is provided. This mode is
incompatible with \fB\-txindex\fR. Warning: Reverting this setting
requires re\-downloading the entire blockchain. (default: 0 =
disable pruning blocks, 1 = allow manual pruning via RPC, >=550 =
automatically prune block files to stay under the specified
target size in MiB)
.HP
\fB\-reindex\fR
.IP
Rebuild chain state and block index from the blk*.dat files on disk.
This will also rebuild active optional indexes.
.HP
\fB\-reindex\-chainstate\fR
.IP
Rebuild chain state from the currently indexed blocks. When in pruning
mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
instead. Deactivate all optional indexes before running this.
.HP
\fB\-sandbox=\fR<mode>
.IP
Use the experimental syscall sandbox in the specified mode
(\fB\-sandbox\fR=\fI\,log\-and\-abort\/\fR or \fB\-sandbox\fR=\fI\,abort\/\fR). Allow only expected
syscalls to be used by bitcoind. Note that this is an
experimental new feature that may cause bitcoind to exit or crash
unexpectedly: use with caution. In the "log\-and\-abort" mode the
invocation of an unexpected syscall results in a debug handler
being invoked which will log the incident and terminate the
program (without executing the unexpected syscall). In the
"abort" mode the invocation of an unexpected syscall results in
the entire process being killed immediately by the kernel without
executing the unexpected syscall.
.HP
\fB\-settings=\fR<file>
.IP
Specify path to dynamic settings data file. Can be disabled with
\fB\-nosettings\fR. File is written at runtime and not meant to be
edited by users (use bitcoin.conf instead for custom settings).
Relative paths will be prefixed by datadir location. (default:
settings.json)
.HP
\fB\-shutdownnotify=\fR<cmd>
.IP
Execute command immediately before beginning shutdown. The need for
shutdown may be urgent, so be careful not to delay it long (if
the command doesn't require interaction with the server, consider
having it fork into the background).
.HP
\fB\-startupnotify=\fR<cmd>
.IP
Execute command on startup.
.HP
\fB\-txindex\fR
.IP
Maintain a full transaction index, used by the getrawtransaction rpc
call (default: 0)
.HP
\fB\-version\fR
.IP
Print version and exit
.PP
Connection options:
.HP
\fB\-addnode=\fR<ip>
.IP
Add a node to connect to and attempt to keep the connection open (see
the addnode RPC help for more info). This option can be specified
multiple times to add multiple nodes; connections are limited to
8 at a time and are counted separately from the \fB\-maxconnections\fR
limit.
.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\-bantime=\fR<n>
.IP
Default duration (in seconds) of manually configured bans (default:
86400)
.HP
\fB\-bind=\fR<addr>[:<port>][=onion]
.IP
Bind to given address and always listen on it (default: 0.0.0.0). Use
[host]:port notation for IPv6. Append =onion to tag any incoming
connections to that address and port as incoming Tor connections
(default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
.HP
\fB\-cjdnsreachable\fR
.IP
If set, then this host is configured for CJDNS (connecting to fc00::/8
addresses would lead us to the CJDNS network, see doc/cjdns.md)
(default: 0)
.HP
\fB\-connect=\fR<ip>
.IP
Connect only to the specified node; \fB\-noconnect\fR disables automatic
connections (the rules for this peer are the same as for
\fB\-addnode\fR). This option can be specified multiple times to connect
to multiple nodes.
.HP
\fB\-discover\fR
.IP
Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
or \fB\-proxy\fR)
.HP
\fB\-dns\fR
.IP
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
.HP
\fB\-dnsseed\fR
.IP
Query for peer addresses via DNS lookup, if low on addresses (default: 1
unless \fB\-connect\fR used or \fB\-maxconnections\fR=\fI\,0\/\fR)
.HP
\fB\-externalip=\fR<ip>
.IP
Specify your own public address
.HP
\fB\-fixedseeds\fR
.IP
Allow fixed seeds if DNS seeds don't provide peers (default: 1)
.HP
\fB\-forcednsseed\fR
.IP
Always query for peer addresses via DNS lookup (default: 0)
.HP
\fB\-i2pacceptincoming\fR
.IP
Whether to accept inbound I2P connections (default: 1). Ignored if
\fB\-i2psam\fR is not set. Listening for inbound I2P connections is done
through the SAM proxy, not by binding to a local address and
port.
.HP
\fB\-i2psam=\fR<ip:port>
.IP
I2P SAM proxy to reach I2P peers and accept I2P connections (default:
none)
.HP
\fB\-listen\fR
.IP
Accept connections from outside (default: 1 if no \fB\-proxy\fR, \fB\-connect\fR or
\fB\-maxconnections\fR=\fI\,0\/\fR)
.HP
\fB\-listenonion\fR
.IP
Automatically create Tor onion service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
Maintain at most <n> connections to peers (default: 125). This limit
does not apply to connections manually added via \fB\-addnode\fR or the
addnode RPC, which have a separate limit of 8.
.HP
\fB\-maxreceivebuffer=\fR<n>
.IP
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
.HP
\fB\-maxsendbuffer=\fR<n>
.IP
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
.HP
\fB\-maxtimeadjustment\fR
.IP
Maximum allowed median peer time offset adjustment. Local perspective of
time may be influenced by outbound peers forward or backward by
this amount (default: 4200 seconds).
.HP
\fB\-maxuploadtarget=\fR<n>
.IP
Tries to keep outbound traffic under the given target per 24h. Limit
does not apply to peers with 'download' permission or blocks
created within past week. 0 = no limit (default: 0M). Optional
suffix units [k|K|m|M|g|G|t|T] (default: M). Lowercase is 1000
base while uppercase is 1024 base
.HP
\fB\-natpmp\fR
.IP
Use NAT\-PMP to map the listening port (default: 0)
.HP
\fB\-networkactive\fR
.IP
Enable all P2P network activity (default: 1). Can be changed by the
setnetworkactive RPC command
.HP
\fB\-onion=\fR<ip:port>
.IP
Use separate SOCKS5 proxy to reach peers via Tor onion services, set
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
.HP
\fB\-onlynet=\fR<net>
.IP
Make automatic outbound connections only to network <net> (ipv4, ipv6,
onion, i2p, cjdns). Inbound and manual connections are not
affected by this option. It can be specified multiple times to
allow multiple networks.
.HP
\fB\-peerblockfilters\fR
.IP
Serve compact block filters to peers per BIP 157 (default: 0)
.HP
\fB\-peerbloomfilters\fR
.IP
Support filtering of blocks and transaction with bloom filters (default:
0)
.HP
\fB\-port=\fR<port>
.IP
Listen for connections on <port>. Nodes not using the default ports
(default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
are unlikely to get incoming connections. Not relevant for I2P
(see doc/i2p.md).
.HP
\fB\-proxy=\fR<ip:port>
.IP
Connect through SOCKS5 proxy, set \fB\-noproxy\fR to disable (default:
disabled)
.HP
\fB\-proxyrandomize\fR
.IP
Randomize credentials for every proxy connection. This enables Tor
stream isolation (default: 1)
.HP
\fB\-seednode=\fR<ip>
.IP
Connect to a node to retrieve peer addresses, and disconnect. This
option can be specified multiple times to connect to multiple
nodes.
.HP
\fB\-timeout=\fR<n>
.IP
Specify socket connection timeout in milliseconds. If an initial attempt
to connect is unsuccessful after this amount of time, drop it
(minimum: 1, default: 5000)
.HP
\fB\-torcontrol=\fR<ip>:<port>
.IP
Tor control port to use if onion listening enabled (default:
127.0.0.1:9051)
.HP
\fB\-torpassword=\fR<pass>
.IP
Tor control port password (default: empty)
.HP
\fB\-upnp\fR
.IP
Use UPnP to map the listening port (default: 1 when listening and no
\fB\-proxy\fR)
.HP
\fB\-whitebind=\fR<[permissions@]addr>
.IP
Bind to the given address and add permission flags to the peers
connecting to it. Use [host]:port notation for IPv6. Allowed
permissions: bloomfilter (allow requesting BIP37 filtered blocks
and transactions), noban (do not ban for misbehavior; implies
download), forcerelay (relay transactions that are already in the
mempool; implies relay), relay (relay even in \fB\-blocksonly\fR mode,
and unlimited transaction announcements), mempool (allow
requesting BIP35 mempool contents), download (allow getheaders
during IBD, no disconnect after maxuploadtarget limit), addr
(responses to GETADDR avoid hitting the cache and contain random
records with the most up\-to\-date info). Specify multiple
permissions separated by commas (default:
download,noban,mempool,relay). Can be specified multiple times.
.HP
\fB\-whitelist=\fR<[permissions@]IP address or network>
.IP
Add permission flags to the peers connecting from the given IP address
(e.g. 1.2.3.4) or CIDR\-notated network (e.g. 1.2.3.0/24). Uses
the same permissions as \fB\-whitebind\fR. Can be specified multiple
times.
.PP
Wallet options:
.HP
\fB\-addresstype\fR
.IP
What type of addresses to use ("legacy", "p2sh\-segwit", "bech32", or
"bech32m", default: "bech32")
.HP
\fB\-avoidpartialspends\fR
.IP
Group outputs by address, selecting many (possibly all) or none, instead
of selecting on a per\-output basis. Privacy is improved as
addresses are mostly swept with fewer transactions and outputs
are aggregated in clean change addresses. It may result in higher
fees due to less optimal coin selection caused by this added
limitation and possibly a larger\-than\-necessary number of inputs
being used. Always enabled for wallets with "avoid_reuse"
enabled, otherwise default: 0.
.HP
\fB\-changetype\fR
.IP
What type of change to use ("legacy", "p2sh\-segwit", "bech32", or
"bech32m"). Default is "legacy" when \fB\-addresstype\fR=\fI\,legacy\/\fR, else it
is an implementation detail.
.HP
\fB\-consolidatefeerate=\fR<amt>
.IP
The maximum feerate (in BTC/kvB) at which transaction building may use
more inputs than strictly necessary so that the wallet's UTXO
pool can be reduced (default: 0.0001).
.HP
\fB\-disablewallet\fR
.IP
Do not load the wallet and disable wallet RPC calls
.HP
\fB\-discardfee=\fR<amt>
.IP
The fee rate (in BTC/kvB) that indicates your tolerance for discarding
change by adding it to the fee (default: 0.0001). Note: An output
is discarded if it is dust at this rate, but we will always
discard up to the dust relay fee and a discard fee above that is
limited by the fee estimate for the longest target
.HP
\fB\-fallbackfee=\fR<amt>
.IP
A fee rate (in BTC/kvB) that will be used when fee estimation has
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). Warning: Smaller sizes may
increase the risk of losing funds when restoring from an old
backup, if none of the addresses in the original keypool have
been used.
.HP
\fB\-maxapsfee=\fR<n>
.IP
Spend up to this amount in additional (absolute) fees (in BTC) if it
allows the use of partial spend avoidance (default: 0.00)
.HP
\fB\-mintxfee=\fR<amt>
.IP
Fee rates (in BTC/kvB) smaller than this are considered zero fee for
transaction creation (default: 0.00001)
.HP
\fB\-paytxfee=\fR<amt>
.IP
Fee rate (in BTC/kvB) to add to transactions you send (default: 0.00)
.HP
\fB\-signer=\fR<cmd>
.IP
External signing tool, see doc/external\-signer.md
.HP
\fB\-spendzeroconfchange\fR
.IP
Spend unconfirmed change when sending transactions (default: 1)
.HP
\fB\-txconfirmtarget=\fR<n>
.IP
If paytxfee is not set, include enough fee so transactions begin
confirmation on average within n blocks (default: 6)
.HP
\fB\-wallet=\fR<path>
.IP
Specify wallet path to load at startup. Can be used multiple times to
load multiple wallets. Path is to a directory containing wallet
data and log files. If the path is not absolute, it is
interpreted relative to <walletdir>. This only loads existing
wallets and does not create new ones. For backwards compatibility
this also accepts names of existing top\-level data files in
<walletdir>.
.HP
\fB\-walletbroadcast\fR
.IP
Make the wallet broadcast transactions (default: 1)
.HP
\fB\-walletdir=\fR<dir>
.IP
Specify directory to hold wallets (default: <datadir>/wallets if it
exists, otherwise <datadir>)
.HP
\fB\-walletnotify=\fR<cmd>
.IP
Execute command when a wallet transaction changes. %s in cmd is replaced
by TxID, %w is replaced by wallet name, %b is replaced by the
hash of the block including the transaction (set to 'unconfirmed'
if the transaction is not included) and %h is replaced by the
block height (\fB\-1\fR if not included). %w is not currently
implemented on windows. On systems where %w is supported, it
should NOT be quoted because this would break shell escaping used
to invoke the command.
.HP
\fB\-walletrbf\fR
.IP
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 1)
.PP
ZeroMQ notification options:
.HP
\fB\-zmqpubhashblock=\fR<address>
.IP
Enable publish hash block in <address>
.HP
\fB\-zmqpubhashblockhwm=\fR<n>
.IP
Set publish hash block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubhashtx=\fR<address>
.IP
Enable publish hash transaction in <address>
.HP
\fB\-zmqpubhashtxhwm=\fR<n>
.IP
Set publish hash transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubrawblock=\fR<address>
.IP
Enable publish raw block in <address>
.HP
\fB\-zmqpubrawblockhwm=\fR<n>
.IP
Set publish raw block outbound message high water mark (default: 1000)
.HP
\fB\-zmqpubrawtx=\fR<address>
.IP
Enable publish raw transaction in <address>
.HP
\fB\-zmqpubrawtxhwm=\fR<n>
.IP
Set publish raw transaction outbound message high water mark (default:
1000)
.HP
\fB\-zmqpubsequence=\fR<address>
.IP
Enable publish hash block and tx sequence in <address>
.HP
\fB\-zmqpubsequencehwm=\fR<n>
.IP
Set publish hash sequence message high water mark (default: 1000)
.PP
Debugging/Testing options:
.HP
\fB\-debug=\fR<category>
.IP
Output debug and trace logging (default: \fB\-nodebug\fR, supplying <category>
is optional). If <category> is not supplied or if <category> = 1,
output all debug and trace logging. <category> can be: addrman,
bench, blockstorage, cmpctblock, coindb, estimatefee, http, i2p,
ipc, leveldb, libevent, mempool, mempoolrej, net, proxy, prune,
qt, rand, reindex, rpc, scan, selectcoins, tor, txreconciliation,
util, validation, walletdb, zmq. This option can be specified
multiple times to output multiple categories.
.HP
\fB\-debugexclude=\fR<category>
.IP
Exclude debug and trace logging for a category. Can be used in
conjunction with \fB\-debug\fR=\fI\,1\/\fR to output debug and trace logging for
all categories except the specified category. This option can be
specified multiple times to exclude multiple categories.
.HP
\fB\-help\-debug\fR
.IP
Print help message with debugging options and exit
.HP
\fB\-logips\fR
.IP
Include IP addresses in debug output (default: 0)
.HP
\fB\-logsourcelocations\fR
.IP
Prepend debug output with name of the originating source location
(source file, line number and function name) (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;
setting this too low may abort large transactions (default: 0.10)
.HP
\fB\-printtoconsole\fR
.IP
Send trace/debug info to console (default: 1 when no \fB\-daemon\fR. To disable
logging to file, set \fB\-nodebuglogfile\fR)
.HP
\fB\-shrinkdebugfile\fR
.IP
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
.HP
\fB\-uacomment=\fR<cmt>
.IP
Append comment to the user agent string
.PP
Chain selection options:
.HP
\fB\-chain=\fR<chain>
.IP
Use the chain <chain> (default: main). Allowed values: main, test,
signet, regtest
.HP
\fB\-signet\fR
.IP
Use the signet chain. Equivalent to \fB\-chain\fR=\fI\,signet\/\fR. Note that the network
is defined by the \fB\-signetchallenge\fR parameter
.HP
\fB\-signetchallenge\fR
.IP
Blocks must satisfy the given script to be considered valid (only for
signet networks; defaults to the global default signet test
network challenge)
.HP
\fB\-signetseednode\fR
.IP
Specify a seed node for the signet network, in the hostname[:port]
format, e.g. sig.net:1234 (may be used multiple times to specify
multiple seed nodes; defaults to the global default signet test
network seed node(s))
.HP
\fB\-testnet\fR
.IP
Use the test chain. Equivalent to \fB\-chain\fR=\fI\,test\/\fR.
.PP
Node relay options:
.HP
\fB\-bytespersigop\fR
.IP
Equivalent bytes per sigop in transactions for relay and mining
(default: 20)
.HP
\fB\-datacarrier\fR
.IP
Relay and mine data carrier transactions (default: 1)
.HP
\fB\-datacarriersize\fR
.IP
Maximum size of data in data carrier transactions we relay and mine
(default: 83)
.HP
\fB\-mempoolfullrbf\fR
.IP
Accept transaction replace\-by\-fee without requiring replaceability
signaling (default: 0)
.HP
\fB\-minrelaytxfee=\fR<amt>
.IP
Fees (in BTC/kvB) smaller than this are considered zero fee for
relaying, mining and transaction creation (default: 0.00001)
.HP
\fB\-permitbaremultisig\fR
.IP
Relay non\-P2SH multisig (default: 1)
.HP
\fB\-whitelistforcerelay\fR
.IP
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
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
\fB\-blockmaxweight=\fR<n>
.IP
Set maximum BIP141 block weight (default: 3996000)
.HP
\fB\-blockmintxfee=\fR<amt>
.IP
Set lowest fee rate (in BTC/kvB) for transactions to be included in
block creation. (default: 0.00001)
.PP
RPC server options:
.HP
\fB\-rest\fR
.IP
Accept public REST requests (default: 0)
.HP
\fB\-rpcallowip=\fR<ip>
.IP
Allow JSON\-RPC connections from specified source. Valid for <ip> are a
single IP (e.g. 1.2.3.4), a network/netmask (e.g.
1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
option can be specified multiple times
.HP
\fB\-rpcauth=\fR<userpw>
.IP
Username and HMAC\-SHA\-256 hashed password for JSON\-RPC connections. The
field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
canonical python script is included in share/rpcauth. The client
then connects normally using the
rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
option can be specified multiple times
.HP
\fB\-rpcbind=\fR<addr>[:port]
.IP
Bind to given address to listen for JSON\-RPC connections. Do not expose
the RPC server to untrusted networks such as the public internet!
This option is ignored unless \fB\-rpcallowip\fR is also passed. Port is
optional and overrides \fB\-rpcport\fR. Use [host]:port notation for
IPv6. This option can be specified multiple times (default:
127.0.0.1 and ::1 i.e., localhost)
.HP
\fB\-rpccookiefile=\fR<loc>
.IP
Location of the auth cookie. Relative paths will be prefixed by a
net\-specific datadir location. (default: data dir)
.HP
\fB\-rpcpassword=\fR<pw>
.IP
Password for JSON\-RPC connections
.HP
\fB\-rpcport=\fR<port>
.IP
Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
18332, signet: 38332, regtest: 18443)
.HP
\fB\-rpcserialversion\fR
.IP
Sets the serialization of raw transaction or block hex returned in
non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
.HP
\fB\-rpcthreads=\fR<n>
.IP
Set the number of threads to service RPC calls (default: 4)
.HP
\fB\-rpcuser=\fR<user>
.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-2023 The Bitcoin Core developers
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.
This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>

View File

@ -1,15 +1,11 @@
*The release notes draft is a temporary file that can be added to by anyone. See
[/doc/developer-notes.md#release-notes](/doc/developer-notes.md#release-notes)
for the process.*
25.2 Release Notes
==================
*version* Release Notes Draft
===============================
Bitcoin Core version 25.2 is now available from:
Bitcoin Core version *version* is now available from:
<https://bitcoincore.org/bin/bitcoin-core-25.2>
<https://bitcoincore.org/bin/bitcoin-core-*version*/>
This release includes new features, various bug fixes and performance
This release includes various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
@ -44,56 +40,35 @@ unsupported systems.
Notable changes
===============
P2P and network changes
-----------------------
### Gui
Updated RPCs
------------
- gui#774 Fix crash on selecting "Mask values" in transaction view
### RPC
Changes to wallet related RPCs can be found in the Wallet section below.
- #29003 rpc: fix getrawtransaction segfault
New RPCs
--------
### Wallet
Build System
------------
- #29176 wallet: Fix use-after-free in WalletBatch::EraseRecords
- #29510 wallet: `getrawchangeaddress` and `getnewaddress` failures should not affect keypools for descriptor wallets
Updated settings
----------------
### P2P and network changes
Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.
New settings
------------
Tools and Utilities
-------------------
Wallet
------
GUI changes
-----------
Low-level changes
=================
RPC
---
Tests
-----
*version* change log
====================
- #29412 p2p: Don't process mutated blocks
- #29524 p2p: Don't consider blocks mutated if they don't connect to known prev block
Credits
=======
Thanks to everyone who directly contributed to this release:
- Martin Zumsande
- Sebastian Falbesoner
- MarcoFalke
- UdjinM6
- dergoegge
- Greg Sanders
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@ -0,0 +1,340 @@
25.0 Release Notes
==================
Bitcoin Core version 25.0 is now available from:
<https://bitcoincore.org/bin/bitcoin-core-25.0/>
This release includes new features, various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
<https://github.com/bitcoin/bitcoin/issues>
To receive security and update notifications, please subscribe to:
<https://bitcoincore.org/en/list/announcements/join/>
How to Upgrade
==============
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
or `bitcoind`/`bitcoin-qt` (on Linux).
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them. It is not recommended to use Bitcoin Core on
unsupported systems.
Notable changes
===============
P2P and network changes
-----------------------
- Transactions of non-witness size 65 bytes and above are now allowed by mempool
and relay policy. This is to better reflect the actual afforded protections
against CVE-2017-12842 and open up additional use-cases of smaller transaction sizes. (#26265)
New RPCs
--------
- The scanblocks RPC returns the relevant blockhashes from a set of descriptors by
scanning all blockfilters in the given range. It can be used in combination with
the getblockheader and rescanblockchain RPCs to achieve fast wallet rescans. Note
that this functionality can only be used if a compact block filter index
(-blockfilterindex=1) has been constructed by the node. (#23549)
Updated RPCs
------------
- All JSON-RPC methods accept a new [named
parameter](https://github.com/bitcoin/bitcoin/blob/master/doc/JSON-RPC-interface.md#parameter-passing) called `args` that can
contain positional parameter values. This is a convenience to allow some
parameter values to be passed by name without having to name every value. The
python test framework and `bitcoin-cli` tool both take advantage of this, so
for example:
```sh
bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1
```
Can now be shortened to:
```sh
bitcoin-cli -named createwallet mywallet load_on_startup=1
```
- The `verifychain` RPC will now return `false` if the checks didn't fail,
but couldn't be completed at the desired depth and level. This could be due
to missing data while pruning, due to an insufficient dbcache or due to
the node being shutdown before the call could finish. (#25574)
- `sendrawtransaction` has a new, optional argument, `maxburnamount` with a default value of `0`.
Any transaction containing an unspendable output with a value greater than `maxburnamount` will
not be submitted. At present, the outputs deemed unspendable are those with scripts that begin
with an `OP_RETURN` code (known as 'datacarriers'), scripts that exceed the maximum script size,
and scripts that contain invalid opcodes.
- The `testmempoolaccept` RPC now returns 2 additional results within the "fees" result:
"effective-feerate" is the feerate including fees and sizes of transactions validated together if
package validation was used, and also includes any modified fees from prioritisetransaction. The
"effective-includes" result lists the wtxids of transactions whose modified fees and sizes were used
in the effective-feerate (#26646).
- `decodescript` may now infer a Miniscript descriptor under P2WSH context if it is not lacking
information. (#27037)
- `finalizepsbt` is now able to finalize a transaction with inputs spending Miniscript-compatible
P2WSH scripts. (#24149)
Changes to wallet related RPCs can be found in the Wallet section below.
Build System
------------
- The `--enable-upnp-default` and `--enable-natpmp-default` options
have been removed. If you want to use port mapping, you can
configure it using a .conf file, or by passing the relevant
options at runtime. (#26896)
Updated settings
----------------
- If the `-checkblocks` or `-checklevel` options are explicitly provided by the
user, but the verification checks cannot be completed due to an insufficient
dbcache, Bitcoin Core will now return an error at startup. (#25574)
- Ports specified in `-port` and `-rpcport` options are now validated at startup.
Values that previously worked and were considered valid can now result in errors. (#22087)
- Setting `-blocksonly` will now reduce the maximum mempool memory
to 5MB (users may still use `-maxmempool` to override). Previously,
the default 300MB would be used, leading to unexpected memory usage
for users running with `-blocksonly` expecting it to eliminate
mempool memory usage.
As unused mempool memory is shared with dbcache, this also reduces
the dbcache size for users running with `-blocksonly`, potentially
impacting performance.
- Setting `-maxconnections=0` will now disable `-dnsseed`
and `-listen` (users may still set them to override).
Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.
New settings
------------
- The `shutdownnotify` option is used to specify a command to execute synchronously
before Bitcoin Core has begun its shutdown sequence. (#23395)
Wallet
------
- The `minconf` option, which allows a user to specify the minimum number
of confirmations a UTXO being spent has, and the `maxconf` option,
which allows specifying the maximum number of confirmations, have been
added to the following RPCs in #25375:
- `fundrawtransaction`
- `send`
- `walletcreatefundedpsbt`
- `sendall`
- Added a new `next_index` field in the response in `listdescriptors` to
have the same format as `importdescriptors` (#26194)
- RPC `listunspent` now has a new argument `include_immature_coinbase`
to include coinbase UTXOs that don't meet the minimum spendability
depth requirement (which before were silently skipped). (#25730)
- Rescans for descriptor wallets are now significantly faster if compact
block filters (BIP158) are available. Since those are not constructed
by default, the configuration option "-blockfilterindex=1" has to be
provided to take advantage of the optimization. This improves the
performance of the RPC calls `rescanblockchain`, `importdescriptors`
and `restorewallet`. (#25957)
- RPC `unloadwallet` now fails if a rescan is in progress. (#26618)
- Wallet passphrases may now contain null characters.
Prior to this change, only characters up to the first
null character were recognized and accepted. (#27068)
- Address Purposes strings are now restricted to the currently known values of "send",
"receive", and "refund". Wallets that have unrecognized purpose strings will have
loading warnings, and the `listlabels` RPC will raise an error if an unrecognized purpose
is requested. (#27217)
- In the `createwallet`, `loadwallet`, `unloadwallet`, and `restorewallet` RPCs, the
"warning" string field is deprecated in favor of a "warnings" field that
returns a JSON array of strings to better handle multiple warning messages and
for consistency with other wallet RPCs. The "warning" field will be fully
removed from these RPCs in v26. It can be temporarily re-enabled during the
deprecation period by launching bitcoind with the configuration option
`-deprecatedrpc=walletwarningfield`. (#27279)
- Descriptor wallets can now spend coins sent to P2WSH Miniscript descriptors. (#24149)
GUI changes
-----------
- The "Mask values" is a persistent option now. (gui#701)
- The "Mask values" option affects the "Transaction" view now, in addition to the
"Overview" one. (gui#708)
REST
----
- A new `/rest/deploymentinfo` endpoint has been added for fetching various
state info regarding deployments of consensus changes. (#25412)
Binary verification
----
- The binary verification script has been updated. In previous releases it
would verify that the binaries had been signed with a single "release key".
In this release and moving forward it will verify that the binaries are
signed by a _threshold of trusted keys_. For more details and
examples, see:
https://github.com/bitcoin/bitcoin/blob/master/contrib/verify-binaries/README.md
(#27358)
Low-level changes
=================
RPC
---
- The JSON-RPC server now rejects requests where a parameter is specified multiple
times with the same name, instead of silently overwriting earlier parameter values
with later ones. (#26628)
- RPC `listsinceblock` now accepts an optional `label` argument
to fetch incoming transactions having the specified label. (#25934)
- Previously `setban`, `addpeeraddress`, `walletcreatefundedpsbt`, methods
allowed non-boolean and non-null values to be passed as boolean parameters.
Any string, number, array, or object value that was passed would be treated
as false. After this change, passing any value except `true`, `false`, or
`null` now triggers a JSON value is not of expected type error. (#26213)
Credits
=======
Thanks to everyone who directly contributed to this release:
- 0xb10c
- 721217.xyz
- @RandyMcMillan
- amadeuszpawlik
- Amiti Uttarwar
- Andrew Chow
- Andrew Toth
- Anthony Towns
- Antoine Poinsot
- Aurèle Oulès
- Ben Woosley
- Bitcoin Hodler
- brunoerg
- Bushstar
- Carl Dong
- Chris Geihsler
- Cory Fields
- David Gumberg
- dergoegge
- Dhruv Mehta
- Dimitris Tsapakidis
- dougEfish
- Douglas Chimento
- ekzyis
- Elichai Turkel
- Ethan Heilman
- Fabian Jahr
- FractalEncrypt
- furszy
- Gleb Naumenko
- glozow
- Greg Sanders
- Hennadii Stepanov
- hernanmarino
- ishaanam
- ismaelsadeeq
- James O'Beirne
- jdjkelly@gmail.com
- Jeff Ruane
- Jeffrey Czyz
- Jeremy Rubin
- Jesse Barton
- João Barbosa
- JoaoAJMatos
- John Moffett
- Jon Atack
- Jonas Schnelli
- jonatack
- Joshua Kelly
- josibake
- Juan Pablo Civile
- kdmukai
- klementtan
- Kolby ML
- kouloumos
- Kristaps Kaupe
- laanwj
- Larry Ruane
- Leonardo Araujo
- Leonardo Lazzaro
- Luke Dashjr
- MacroFake
- MarcoFalke
- Martin Leitner-Ankerl
- Martin Zumsande
- Matt Whitlock
- Matthew Zipkin
- Michael Ford
- Miles Liu
- mruddy
- Murray Nesbitt
- muxator
- omahs
- pablomartin4btc
- Pasta
- Pieter Wuille
- Pttn
- Randall Naar
- Riahiamirreza
- roconnor-blockstream
- Russell O'Connor
- Ryan Ofsky
- S3RK
- Sebastian Falbesoner
- Seibart Nedor
- sinetek
- Sjors Provoost
- Skuli Dulfari
- SomberNight
- Stacie Waleyko
- stickies-v
- stratospher
- Suhas Daftuar
- Suriyaa Sundararuban
- TheCharlatan
- Vasil Dimov
- Vasil Stoyanov
- virtu
- w0xlt
- willcl-ark
- yancy
- Yusuf Sahin HAMZA
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@ -0,0 +1,108 @@
25.1 Release Notes
==================
Bitcoin Core version 25.1 is now available from:
<https://bitcoincore.org/bin/bitcoin-core-25.1/>
This release includes various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
<https://github.com/bitcoin/bitcoin/issues>
To receive security and update notifications, please subscribe to:
<https://bitcoincore.org/en/list/announcements/join/>
How to Upgrade
==============
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
or `bitcoind`/`bitcoin-qt` (on Linux).
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them. It is not recommended to use Bitcoin Core on
unsupported systems.
Notable changes
===============
### P2P
- #27626 Parallel compact block downloads, take 3
- #27743 p2p: Unconditionally return when compact block status == READ_STATUS_FAILED
### Fees
- #27622 Fee estimation: avoid serving stale fee estimate
### RPC
- #27727 rpc: Fix invalid bech32 address handling
### Rest
- #27853 rest: fix crash error when calling /deploymentinfo
- #28551 http: bugfix: allow server shutdown in case of remote client disconnection
### Wallet
- #28038 wallet: address book migration bug fixes
- #28067 descriptors: do not return top-level only funcs as sub descriptors
- #28125 wallet: bugfix, disallow migration of invalid scripts
- #28542 wallet: Check for uninitialized last processed and conflicting heights in MarkConflicted
### Build
- #27724 build: disable boost multi index safe mode in debug mode
- #28097 depends: xcb-proto 1.15.2
- #28543 build, macos: Fix qt package build with new Xcode 15 linker
- #28571 depends: fix unusable memory_resource in macos qt build
### Gui
- gui#751 macOS, do not process actions during shutdown
### Miscellaneous
- #28452 Do not use std::vector = {} to release memory
### CI
- #27777 ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN
- #27834 ci: Nuke Android APK task, Use credits for tsan
- #27844 ci: Use podman stop over podman kill
- #27886 ci: Switch to amd64 container in "ARM" task
Credits
=======
Thanks to everyone who directly contributed to this release:
- Abubakar Sadiq Ismail
- Andrew Chow
- Bruno Garcia
- Gregory Sanders
- Hennadii Stepanov
- MacroFake
- Matias Furszyfer
- Michael Ford
- Pieter Wuille
- stickies-v
- Will Clark
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

View File

@ -1 +1,687 @@
# This is a placeholder file. Please follow the instructions in `contrib/devtools/README.md` to generate a bitcoin.conf file.
##
## bitcoin.conf configuration file.
## Generated by contrib/devtools/gen-bitcoin-conf.sh.
##
## Lines beginning with # are comments.
## All possible configuration options are provided. To use, copy this file
## to your data directory (default or specified by -datadir), uncomment
## options you would like to change, and save the file.
##
### Options
# Execute command when an alert is raised (%s in cmd is replaced by
# message)
#alertnotify=<cmd>
# 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:
# 000000000000000000035c3f0d31e71a5ee24c5aaf3354689f65bd7b07dee632,
# testnet:
# 0000000000000021bc50a89cde4870d4a81ffe0153b3c8de77b435a2fd3f6761,
# signet:
# 0000004429ef154f7e00b4f6b46bfbe2d2678ecd351d95bbfca437ab9a5b84ec)
#assumevalid=<hex>
# 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.
#blockfilterindex=<type>
# Execute command when the best block changes (%s in cmd is replaced by
# block hash)
#blocknotify=<cmd>
# Extra transactions to keep in memory for compact block reconstructions
# (default: 100)
#blockreconstructionextratxn=<n>
# Specify directory to hold blocks subdirectory for *.dat files (default:
# <datadir>)
#blocksdir=<dir>
# Whether to reject transactions from network peers. Automatic broadcast
# and rebroadcast of any transactions from inbound peers is
# disabled, unless the peer has the 'forcerelay' permission. RPC
# transactions are not affected. (default: 0)
#blocksonly=1
# Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0)
#coinstatsindex=1
# Specify path to read-only configuration file. Relative paths will be
# prefixed by datadir location (only useable from command line, not
# configuration file) (default: bitcoin.conf)
#conf=<file>
# Run in the background as a daemon and accept commands (default: 0)
#daemon=1
# Wait for initialization to be finished before exiting. This implies
# -daemon (default: 0)
#daemonwait=1
# Specify data directory
#datadir=<dir>
# Maximum database cache size <n> MiB (4 to 16384, default: 450). In
# addition, unused mempool memory is shared for this cache (see
# -maxmempool).
#dbcache=<n>
# Specify location of debug log file (default: debug.log). Relative paths
# will be prefixed by a net-specific datadir location. Pass
# -nodebuglogfile to disable writing the log to a file.
#debuglogfile=<file>
# Specify additional configuration file, relative to the -datadir path
# (only useable from configuration file, not command line)
#includeconf=<file>
# Imports blocks from external file on startup
#loadblock=<file>
# Keep the transaction memory pool below <n> megabytes (default: 300)
#maxmempool=<n>
# Keep at most <n> unconnectable transactions in memory (default: 100)
#maxorphantx=<n>
# Do not keep transactions in the mempool longer than <n> hours (default:
# 336)
#mempoolexpiry=<n>
# Set the number of script verification threads (-10 to 15, 0 = auto, <0 =
# leave that many cores free, default: 0)
#par=<n>
# Whether to save the mempool on shutdown and load on restart (default: 1)
#persistmempool=1
# Specify pid file. Relative paths will be prefixed by a net-specific
# datadir location. (default: bitcoind.pid)
#pid=<file>
# Reduce storage requirements by enabling pruning (deleting) of old
# blocks. This allows the pruneblockchain RPC to be called to
# delete specific blocks and enables automatic pruning of old
# blocks if a target size in MiB is provided. This mode is
# incompatible with -txindex. Warning: Reverting this setting
# requires re-downloading the entire blockchain. (default: 0 =
# disable pruning blocks, 1 = allow manual pruning via RPC, >=550 =
# automatically prune block files to stay under the specified
# target size in MiB)
#prune=<n>
# Rebuild chain state and block index from the blk*.dat files on disk.
# This will also rebuild active optional indexes.
#reindex=1
# Rebuild chain state from the currently indexed blocks. When in pruning
# mode or if blocks on disk might be corrupted, use full -reindex
# instead. Deactivate all optional indexes before running this.
#reindex-chainstate=1
# Use the experimental syscall sandbox in the specified mode
# (-sandbox=log-and-abort or -sandbox=abort). Allow only expected
# syscalls to be used by bitcoind. Note that this is an
# experimental new feature that may cause bitcoind to exit or crash
# unexpectedly: use with caution. In the "log-and-abort" mode the
# invocation of an unexpected syscall results in a debug handler
# being invoked which will log the incident and terminate the
# program (without executing the unexpected syscall). In the
# "abort" mode the invocation of an unexpected syscall results in
# the entire process being killed immediately by the kernel without
# executing the unexpected syscall.
#sandbox=<mode>
# Specify path to dynamic settings data file. Can be disabled with
# -nosettings. File is written at runtime and not meant to be
# edited by users (use bitcoin.conf instead for custom settings).
# Relative paths will be prefixed by datadir location. (default:
# settings.json)
#settings=<file>
# Execute command immediately before beginning shutdown. The need for
# shutdown may be urgent, so be careful not to delay it long (if
# the command doesn't require interaction with the server, consider
# having it fork into the background).
#shutdownnotify=<cmd>
# Execute command on startup.
#startupnotify=<cmd>
# Maintain a full transaction index, used by the getrawtransaction rpc
# call (default: 0)
#txindex=1
# Print version and exit
#version=1
### Connection options
# Add a node to connect to and attempt to keep the connection open (see
# the addnode RPC help for more info). This option can be specified
# multiple times to add multiple nodes; connections are limited to
# 8 at a time and are counted separately from the -maxconnections
# limit.
#addnode=<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.
#asmap=<file>
# Default duration (in seconds) of manually configured bans (default:
# 86400)
#bantime=<n>
# Bind to given address and always listen on it (default: 0.0.0.0). Use
# [host]:port notation for IPv6. Append =onion to tag any incoming
# connections to that address and port as incoming Tor connections
# (default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
# signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
#bind=<addr>[:<port>][=onion]
# If set, then this host is configured for CJDNS (connecting to fc00::/8
# addresses would lead us to the CJDNS network, see doc/cjdns.md)
# (default: 0)
#cjdnsreachable=1
# Connect only to the specified node; -noconnect disables automatic
# connections (the rules for this peer are the same as for
# -addnode). This option can be specified multiple times to connect
# to multiple nodes.
#connect=<ip>
# Discover own IP addresses (default: 1 when listening and no -externalip
# or -proxy)
#discover=1
# Allow DNS lookups for -addnode, -seednode and -connect (default: 1)
#dns=1
# Query for peer addresses via DNS lookup, if low on addresses (default: 1
# unless -connect used or -maxconnections=0)
#dnsseed=1
# Specify your own public address
#externalip=<ip>
# Allow fixed seeds if DNS seeds don't provide peers (default: 1)
#fixedseeds=1
# Always query for peer addresses via DNS lookup (default: 0)
#forcednsseed=1
# Whether to accept inbound I2P connections (default: 1). Ignored if
# -i2psam is not set. Listening for inbound I2P connections is done
# through the SAM proxy, not by binding to a local address and
# port.
#i2pacceptincoming=1
# I2P SAM proxy to reach I2P peers and accept I2P connections (default:
# none)
#i2psam=<ip:port>
# Accept connections from outside (default: 1 if no -proxy, -connect or
# -maxconnections=0)
#listen=1
# Automatically create Tor onion service (default: 1)
#listenonion=1
# Maintain at most <n> connections to peers (default: 125). This limit
# does not apply to connections manually added via -addnode or the
# addnode RPC, which have a separate limit of 8.
#maxconnections=<n>
# Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000)
#maxreceivebuffer=<n>
# Maximum per-connection send buffer, <n>*1000 bytes (default: 1000)
#maxsendbuffer=<n>
# Maximum allowed median peer time offset adjustment. Local perspective of
# time may be influenced by outbound peers forward or backward by
# this amount (default: 4200 seconds).
#maxtimeadjustment=1
# Tries to keep outbound traffic under the given target per 24h. Limit
# does not apply to peers with 'download' permission or blocks
# created within past week. 0 = no limit (default: 0M). Optional
# suffix units [k|K|m|M|g|G|t|T] (default: M). Lowercase is 1000
# base while uppercase is 1024 base
#maxuploadtarget=<n>
# Use NAT-PMP to map the listening port (default: 0)
#natpmp=1
# Enable all P2P network activity (default: 1). Can be changed by the
# setnetworkactive RPC command
#networkactive=1
# Use separate SOCKS5 proxy to reach peers via Tor onion services, set
# -noonion to disable (default: -proxy)
#onion=<ip:port>
# Make automatic outbound connections only to network <net> (ipv4, ipv6,
# onion, i2p, cjdns). Inbound and manual connections are not
# affected by this option. It can be specified multiple times to
# allow multiple networks.
#onlynet=<net>
# Serve compact block filters to peers per BIP 157 (default: 0)
#peerblockfilters=1
# Support filtering of blocks and transaction with bloom filters (default:
# 0)
#peerbloomfilters=1
# Listen for connections on <port>. Nodes not using the default ports
# (default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
# are unlikely to get incoming connections. Not relevant for I2P
# (see doc/i2p.md).
#port=<port>
# Connect through SOCKS5 proxy, set -noproxy to disable (default:
# disabled)
#proxy=<ip:port>
# Randomize credentials for every proxy connection. This enables Tor
# stream isolation (default: 1)
#proxyrandomize=1
# Connect to a node to retrieve peer addresses, and disconnect. This
# option can be specified multiple times to connect to multiple
# nodes.
#seednode=<ip>
# Specify socket connection timeout in milliseconds. If an initial attempt
# to connect is unsuccessful after this amount of time, drop it
# (minimum: 1, default: 5000)
#timeout=<n>
# Tor control port to use if onion listening enabled (default:
# 127.0.0.1:9051)
#torcontrol=<ip>:<port>
# Tor control port password (default: empty)
#torpassword=<pass>
# Use UPnP to map the listening port (default: 1 when listening and no
# -proxy)
#upnp=1
# Bind to the given address and add permission flags to the peers
# connecting to it. Use [host]:port notation for IPv6. Allowed
# permissions: bloomfilter (allow requesting BIP37 filtered blocks
# and transactions), noban (do not ban for misbehavior; implies
# download), forcerelay (relay transactions that are already in the
# mempool; implies relay), relay (relay even in -blocksonly mode,
# and unlimited transaction announcements), mempool (allow
# requesting BIP35 mempool contents), download (allow getheaders
# during IBD, no disconnect after maxuploadtarget limit), addr
# (responses to GETADDR avoid hitting the cache and contain random
# records with the most up-to-date info). Specify multiple
# permissions separated by commas (default:
# download,noban,mempool,relay). Can be specified multiple times.
#whitebind=<[permissions@]addr>
# Add permission flags to the peers connecting from the given IP address
# (e.g. 1.2.3.4) or CIDR-notated network (e.g. 1.2.3.0/24). Uses
# the same permissions as -whitebind. Can be specified multiple
# times.
#whitelist=<[permissions@]IP address or network>
### Wallet options
# What type of addresses to use ("legacy", "p2sh-segwit", "bech32", or
# "bech32m", default: "bech32")
#addresstype=1
# Group outputs by address, selecting many (possibly all) or none, instead
# of selecting on a per-output basis. Privacy is improved as
# addresses are mostly swept with fewer transactions and outputs
# are aggregated in clean change addresses. It may result in higher
# fees due to less optimal coin selection caused by this added
# limitation and possibly a larger-than-necessary number of inputs
# being used. Always enabled for wallets with "avoid_reuse"
# enabled, otherwise default: 0.
#avoidpartialspends=1
# What type of change to use ("legacy", "p2sh-segwit", "bech32", or
# "bech32m"). Default is "legacy" when -addresstype=legacy, else it
# is an implementation detail.
#changetype=1
# The maximum feerate (in BTC/kvB) at which transaction building may use
# more inputs than strictly necessary so that the wallet's UTXO
# pool can be reduced (default: 0.0001).
#consolidatefeerate=<amt>
# Do not load the wallet and disable wallet RPC calls
#disablewallet=1
# The fee rate (in BTC/kvB) that indicates your tolerance for discarding
# change by adding it to the fee (default: 0.0001). Note: An output
# is discarded if it is dust at this rate, but we will always
# discard up to the dust relay fee and a discard fee above that is
# limited by the fee estimate for the longest target
#discardfee=<amt>
# A fee rate (in BTC/kvB) that will be used when fee estimation has
# insufficient data. 0 to entirely disable the fallbackfee feature.
# (default: 0.00)
#fallbackfee=<amt>
# 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.
#keypool=<n>
# Spend up to this amount in additional (absolute) fees (in BTC) if it
# allows the use of partial spend avoidance (default: 0.00)
#maxapsfee=<n>
# Fee rates (in BTC/kvB) smaller than this are considered zero fee for
# transaction creation (default: 0.00001)
#mintxfee=<amt>
# Fee rate (in BTC/kvB) to add to transactions you send (default: 0.00)
#paytxfee=<amt>
# External signing tool, see doc/external-signer.md
#signer=<cmd>
# Spend unconfirmed change when sending transactions (default: 1)
#spendzeroconfchange=1
# If paytxfee is not set, include enough fee so transactions begin
# confirmation on average within n blocks (default: 6)
#txconfirmtarget=<n>
# Specify wallet path to load at startup. Can be used multiple times to
# load multiple wallets. Path is to a directory containing wallet
# data and log files. If the path is not absolute, it is
# interpreted relative to <walletdir>. This only loads existing
# wallets and does not create new ones. For backwards compatibility
# this also accepts names of existing top-level data files in
# <walletdir>.
#wallet=<path>
# Make the wallet broadcast transactions (default: 1)
#walletbroadcast=1
# Specify directory to hold wallets (default: <datadir>/wallets if it
# exists, otherwise <datadir>)
#walletdir=<dir>
# Execute command when a wallet transaction changes. %s in cmd is replaced
# by TxID, %w is replaced by wallet name, %b is replaced by the
# hash of the block including the transaction (set to 'unconfirmed'
# if the transaction is not included) and %h is replaced by the
# block height (-1 if not included). %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.
#walletnotify=<cmd>
# Send transactions with full-RBF opt-in enabled (RPC only, default: 1)
#walletrbf=1
### ZeroMQ notification options
# Enable publish hash block in <address>
#zmqpubhashblock=<address>
# Set publish hash block outbound message high water mark (default: 1000)
#zmqpubhashblockhwm=<n>
# Enable publish hash transaction in <address>
#zmqpubhashtx=<address>
# Set publish hash transaction outbound message high water mark (default:
# 1000)
#zmqpubhashtxhwm=<n>
# Enable publish raw block in <address>
#zmqpubrawblock=<address>
# Set publish raw block outbound message high water mark (default: 1000)
#zmqpubrawblockhwm=<n>
# Enable publish raw transaction in <address>
#zmqpubrawtx=<address>
# Set publish raw transaction outbound message high water mark (default:
# 1000)
#zmqpubrawtxhwm=<n>
# Enable publish hash block and tx sequence in <address>
#zmqpubsequence=<address>
# Set publish hash sequence message high water mark (default: 1000)
#zmqpubsequencehwm=<n>
### Debugging/Testing options
# Output debug and trace logging (default: -nodebug, supplying <category>
# is optional). If <category> is not supplied or if <category> = 1,
# output all debug and trace logging. <category> can be: addrman,
# bench, blockstorage, cmpctblock, coindb, estimatefee, http, i2p,
# ipc, leveldb, libevent, mempool, mempoolrej, net, proxy, prune,
# qt, rand, reindex, rpc, scan, selectcoins, tor, txreconciliation,
# util, validation, walletdb, zmq. This option can be specified
# multiple times to output multiple categories.
#debug=<category>
# Exclude debug and trace logging for a category. Can be used in
# conjunction with -debug=1 to output debug and trace logging for
# all categories except the specified category. This option can be
# specified multiple times to exclude multiple categories.
#debugexclude=<category>
# Print help message with debugging options and exit
#help-debug=1
# Include IP addresses in debug output (default: 0)
#logips=1
# Prepend debug output with name of the originating source location
# (source file, line number and function name) (default: 0)
#logsourcelocations=1
# Prepend debug output with name of the originating thread (only available
# on platforms supporting thread_local) (default: 0)
#logthreadnames=1
# Prepend debug output with timestamp (default: 1)
#logtimestamps=1
# Maximum total fees (in BTC) to use in a single wallet transaction;
# setting this too low may abort large transactions (default: 0.10)
#maxtxfee=<amt>
# Send trace/debug info to console (default: 1 when no -daemon. To disable
# logging to file, set -nodebuglogfile)
#printtoconsole=1
# Shrink debug.log file on client startup (default: 1 when no -debug)
#shrinkdebugfile=1
# Append comment to the user agent string
#uacomment=<cmt>
### Chain selection options
# Use the chain <chain> (default: main). Allowed values: main, test,
# signet, regtest
#chain=<chain>
# Use the signet chain. Equivalent to -chain=signet. Note that the network
# is defined by the -signetchallenge parameter
#signet=1
# Blocks must satisfy the given script to be considered valid (only for
# signet networks; defaults to the global default signet test
# network challenge)
#signetchallenge=1
# Specify a seed node for the signet network, in the hostname[:port]
# format, e.g. sig.net:1234 (may be used multiple times to specify
# multiple seed nodes; defaults to the global default signet test
# network seed node(s))
#signetseednode=1
# Use the test chain. Equivalent to -chain=test.
#testnet=1
### Node relay options
# Equivalent bytes per sigop in transactions for relay and mining
# (default: 20)
#bytespersigop=1
# Relay and mine data carrier transactions (default: 1)
#datacarrier=1
# Maximum size of data in data carrier transactions we relay and mine
# (default: 83)
#datacarriersize=1
# Accept transaction replace-by-fee without requiring replaceability
# signaling (default: 0)
#mempoolfullrbf=1
# Fees (in BTC/kvB) smaller than this are considered zero fee for
# relaying, mining and transaction creation (default: 0.00001)
#minrelaytxfee=<amt>
# Relay non-P2SH multisig (default: 1)
#permitbaremultisig=1
# 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)
#whitelistforcerelay=1
# Add 'relay' permission to whitelisted inbound peers with default
# permissions. This will accept relayed transactions even when not
# relaying transactions (default: 1)
#whitelistrelay=1
### Block creation options
# Set maximum BIP141 block weight (default: 3996000)
#blockmaxweight=<n>
# Set lowest fee rate (in BTC/kvB) for transactions to be included in
# block creation. (default: 0.00001)
#blockmintxfee=<amt>
### RPC server options
# Accept public REST requests (default: 0)
#rest=1
# Allow JSON-RPC connections from specified source. Valid for <ip> are a
# single IP (e.g. 1.2.3.4), a network/netmask (e.g.
# 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
# option can be specified multiple times
#rpcallowip=<ip>
# Username and HMAC-SHA-256 hashed password for JSON-RPC connections. The
# field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
# canonical python script is included in share/rpcauth. The client
# then connects normally using the
# rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
# option can be specified multiple times
#rpcauth=<userpw>
# Bind to given address to listen for JSON-RPC connections. Do not expose
# the RPC server to untrusted networks such as the public internet!
# This option is ignored unless -rpcallowip is also passed. Port is
# optional and overrides -rpcport. Use [host]:port notation for
# IPv6. This option can be specified multiple times (default:
# 127.0.0.1 and ::1 i.e., localhost)
#rpcbind=<addr>[:port]
# Location of the auth cookie. Relative paths will be prefixed by a
# net-specific datadir location. (default: data dir)
#rpccookiefile=<loc>
# Password for JSON-RPC connections
#rpcpassword=<pw>
# Listen for JSON-RPC connections on <port> (default: 8332, testnet:
# 18332, signet: 38332, regtest: 18443)
#rpcport=<port>
# Sets the serialization of raw transaction or block hex returned in
# non-verbose mode, non-segwit(0) or segwit(1) (default: 1)
#rpcserialversion=1
# Set the number of threads to service RPC calls (default: 4)
#rpcthreads=<n>
# Username for JSON-RPC connections
#rpcuser=<user>
# 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 -rpcwhitelistdefault documentation
# for information on default whitelist behavior.
#rpcwhitelist=<whitelist>
# Sets default behavior for rpc whitelisting. Unless rpcwhitelistdefault
# is set to 0, if any -rpcwhitelist 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
# -rpcwhitelist is set, rpc server acts as if all rpc users are
# subject to empty whitelists.
#rpcwhitelistdefault=1
# Accept command line and JSON-RPC commands
#server=1
# [Sections]
# Most options will apply to all networks. To confine an option to a specific
# network, add it under the relevant section below.
#
# Note: If not specified under a network section, the options addnode, connect,
# port, bind, rpcport, rpcbind, and wallet will only apply to mainnet.
# Options for mainnet
[main]
# Options for testnet
[test]
# Options for signet
[signet]
# Options for regtest
[regtest]

View File

@ -2,15 +2,20 @@ QT_TS = \
qt/locale/bitcoin_am.ts \
qt/locale/bitcoin_ar.ts \
qt/locale/bitcoin_az.ts \
qt/locale/bitcoin_az@latin.ts \
qt/locale/bitcoin_be.ts \
qt/locale/bitcoin_bg.ts \
qt/locale/bitcoin_bn.ts \
qt/locale/bitcoin_br.ts \
qt/locale/bitcoin_bs.ts \
qt/locale/bitcoin_ca.ts \
qt/locale/bitcoin_cmn.ts \
qt/locale/bitcoin_cs.ts \
qt/locale/bitcoin_cy.ts \
qt/locale/bitcoin_da.ts \
qt/locale/bitcoin_de.ts \
qt/locale/bitcoin_de_AT.ts \
qt/locale/bitcoin_de_CH.ts \
qt/locale/bitcoin_el.ts \
qt/locale/bitcoin_en.ts \
qt/locale/bitcoin_eo.ts \
@ -19,6 +24,7 @@ QT_TS = \
qt/locale/bitcoin_es_CO.ts \
qt/locale/bitcoin_es_DO.ts \
qt/locale/bitcoin_es_MX.ts \
qt/locale/bitcoin_es_SV.ts \
qt/locale/bitcoin_es_VE.ts \
qt/locale/bitcoin_et.ts \
qt/locale/bitcoin_eu.ts \
@ -26,13 +32,18 @@ QT_TS = \
qt/locale/bitcoin_fi.ts \
qt/locale/bitcoin_fil.ts \
qt/locale/bitcoin_fr.ts \
qt/locale/bitcoin_fr_CM.ts \
qt/locale/bitcoin_fr_LU.ts \
qt/locale/bitcoin_ga.ts \
qt/locale/bitcoin_ga_IE.ts \
qt/locale/bitcoin_gd.ts \
qt/locale/bitcoin_gl.ts \
qt/locale/bitcoin_gl_ES.ts \
qt/locale/bitcoin_gu.ts \
qt/locale/bitcoin_ha.ts \
qt/locale/bitcoin_hak.ts \
qt/locale/bitcoin_he.ts \
qt/locale/bitcoin_hi.ts \
qt/locale/bitcoin_hr.ts \
qt/locale/bitcoin_hu.ts \
qt/locale/bitcoin_id.ts \
@ -43,6 +54,7 @@ QT_TS = \
qt/locale/bitcoin_kk.ts \
qt/locale/bitcoin_kl.ts \
qt/locale/bitcoin_km.ts \
qt/locale/bitcoin_kn.ts \
qt/locale/bitcoin_ko.ts \
qt/locale/bitcoin_ku.ts \
qt/locale/bitcoin_ku_IQ.ts \
@ -50,11 +62,14 @@ QT_TS = \
qt/locale/bitcoin_la.ts \
qt/locale/bitcoin_lt.ts \
qt/locale/bitcoin_lv.ts \
qt/locale/bitcoin_mg.ts \
qt/locale/bitcoin_mk.ts \
qt/locale/bitcoin_ml.ts \
qt/locale/bitcoin_mn.ts \
qt/locale/bitcoin_mr.ts \
qt/locale/bitcoin_mr_IN.ts \
qt/locale/bitcoin_ms.ts \
qt/locale/bitcoin_mt.ts \
qt/locale/bitcoin_my.ts \
qt/locale/bitcoin_nb.ts \
qt/locale/bitcoin_ne.ts \
@ -72,8 +87,10 @@ QT_TS = \
qt/locale/bitcoin_sk.ts \
qt/locale/bitcoin_sl.ts \
qt/locale/bitcoin_sn.ts \
qt/locale/bitcoin_so.ts \
qt/locale/bitcoin_sq.ts \
qt/locale/bitcoin_sr.ts \
qt/locale/bitcoin_sr@ijekavianlatin.ts \
qt/locale/bitcoin_sr@latin.ts \
qt/locale/bitcoin_sv.ts \
qt/locale/bitcoin_sw.ts \
@ -92,7 +109,9 @@ QT_TS = \
qt/locale/bitcoin_uz@Latn.ts \
qt/locale/bitcoin_vi.ts \
qt/locale/bitcoin_yo.ts \
qt/locale/bitcoin_yue.ts \
qt/locale/bitcoin_zh-Hans.ts \
qt/locale/bitcoin_zh-Hant.ts \
qt/locale/bitcoin_zh.ts \
qt/locale/bitcoin_zh_CN.ts \
qt/locale/bitcoin_zh_HK.ts \

View File

@ -33,7 +33,7 @@ static void LoadExternalBlockFile(benchmark::Bench& bench)
ss << static_cast<uint32_t>(benchmark::data::block413567.size());
// We can't use the streaming serialization (ss << benchmark::data::block413567)
// because that first writes a compact size.
ss.write(MakeByteSpan(benchmark::data::block413567));
ss << Span{benchmark::data::block413567};
// Create the test file.
{

View File

@ -7,6 +7,7 @@
#include <pow.h>
#include <timedata.h>
#include <util/check.h>
#include <util/vector.h>
// The two constants below are computed using the simulation script on
// https://gist.github.com/sipa/016ae445c132cdf65a2791534dfb7ae1
@ -51,9 +52,9 @@ HeadersSyncState::HeadersSyncState(NodeId id, const Consensus::Params& consensus
void HeadersSyncState::Finalize()
{
Assume(m_download_state != State::FINAL);
m_header_commitments = {};
ClearShrink(m_header_commitments);
m_last_header_received.SetNull();
m_redownloaded_headers = {};
ClearShrink(m_redownloaded_headers);
m_redownload_buffer_last_hash.SetNull();
m_redownload_buffer_first_prev_hash.SetNull();
m_process_all_remaining_headers = false;

View File

@ -15,6 +15,7 @@
#include <rpc/protocol.h> // For HTTP status codes
#include <shutdown.h>
#include <sync.h>
#include <util/check.h>
#include <util/strencodings.h>
#include <util/syscall_sandbox.h>
#include <util/system.h>
@ -28,7 +29,7 @@
#include <memory>
#include <optional>
#include <string>
#include <unordered_set>
#include <unordered_map>
#include <sys/types.h>
#include <sys/stat.h>
@ -149,10 +150,61 @@ static GlobalMutex g_httppathhandlers_mutex;
static std::vector<HTTPPathHandler> pathHandlers GUARDED_BY(g_httppathhandlers_mutex);
//! Bound listening sockets
static std::vector<evhttp_bound_socket *> boundSockets;
/**
* @brief Helps keep track of open `evhttp_connection`s with active `evhttp_requests`
*
*/
class HTTPRequestTracker
{
private:
mutable Mutex m_mutex;
mutable std::condition_variable m_cv;
//! For each connection, keep a counter of how many requests are open
std::unordered_map<const evhttp_connection*, size_t> m_tracker GUARDED_BY(m_mutex);
void RemoveConnectionInternal(const decltype(m_tracker)::iterator it) EXCLUSIVE_LOCKS_REQUIRED(m_mutex)
{
m_tracker.erase(it);
if (m_tracker.empty()) m_cv.notify_all();
}
public:
//! Increase request counter for the associated connection by 1
void AddRequest(evhttp_request* req) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
{
const evhttp_connection* conn{Assert(evhttp_request_get_connection(Assert(req)))};
WITH_LOCK(m_mutex, ++m_tracker[conn]);
}
//! Decrease request counter for the associated connection by 1, remove connection if counter is 0
void RemoveRequest(evhttp_request* req) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
{
const evhttp_connection* conn{Assert(evhttp_request_get_connection(Assert(req)))};
LOCK(m_mutex);
auto it{m_tracker.find(conn)};
if (it != m_tracker.end() && it->second > 0) {
if (--(it->second) == 0) RemoveConnectionInternal(it);
}
}
//! Remove a connection entirely
void RemoveConnection(const evhttp_connection* conn) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
{
LOCK(m_mutex);
auto it{m_tracker.find(Assert(conn))};
if (it != m_tracker.end()) RemoveConnectionInternal(it);
}
size_t CountActiveConnections() const EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
{
return WITH_LOCK(m_mutex, return m_tracker.size());
}
//! Wait until there are no more connections with active requests in the tracker
void WaitUntilEmpty() const EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
{
WAIT_LOCK(m_mutex, lock);
m_cv.wait(lock, [this]() EXCLUSIVE_LOCKS_REQUIRED(m_mutex) { return m_tracker.empty(); });
}
};
//! Track active requests
static GlobalMutex g_requests_mutex;
static std::condition_variable g_requests_cv;
static std::unordered_set<evhttp_request*> g_requests GUARDED_BY(g_requests_mutex);
static HTTPRequestTracker g_requests;
/** Check if a network address is allowed to access the HTTP server */
static bool ClientAllowed(const CNetAddr& netaddr)
@ -214,20 +266,20 @@ std::string RequestMethodString(HTTPRequest::RequestMethod m)
/** HTTP request callback */
static void http_request_cb(struct evhttp_request* req, void* arg)
{
// Track requests and notify when a request is completed.
evhttp_connection* conn{evhttp_request_get_connection(req)};
// Track active requests
{
WITH_LOCK(g_requests_mutex, g_requests.insert(req));
g_requests_cv.notify_all();
g_requests.AddRequest(req);
evhttp_request_set_on_complete_cb(req, [](struct evhttp_request* req, void*) {
auto n{WITH_LOCK(g_requests_mutex, return g_requests.erase(req))};
assert(n == 1);
g_requests_cv.notify_all();
g_requests.RemoveRequest(req);
}, nullptr);
evhttp_connection_set_closecb(conn, [](evhttp_connection* conn, void* arg) {
g_requests.RemoveConnection(conn);
}, nullptr);
}
// Disable reading to work around a libevent bug, fixed in 2.2.0.
if (event_get_version_number() >= 0x02010600 && event_get_version_number() < 0x02020001) {
evhttp_connection* conn = evhttp_request_get_connection(req);
if (conn) {
bufferevent* bev = evhttp_connection_get_bufferevent(conn);
if (bev) {
@ -477,13 +529,10 @@ void StopHTTPServer()
}
boundSockets.clear();
{
WAIT_LOCK(g_requests_mutex, lock);
if (!g_requests.empty()) {
LogPrint(BCLog::HTTP, "Waiting for %d requests to stop HTTP server\n", g_requests.size());
if (const auto n_connections{g_requests.CountActiveConnections()}; n_connections != 0) {
LogPrint(BCLog::HTTP, "Waiting for %d connections to stop HTTP server\n", n_connections);
}
g_requests_cv.wait(lock, []() EXCLUSIVE_LOCKS_REQUIRED(g_requests_mutex) {
return g_requests.empty();
});
g_requests.WaitUntilEmpty();
}
if (eventHTTP) {
// Schedule a callback to call evhttp_free in the event base thread, so

View File

@ -79,6 +79,7 @@
#include <util/system.h>
#include <util/thread.h>
#include <util/threadnames.h>
#include <util/time.h>
#include <util/translation.h>
#include <validation.h>
#include <validationinterface.h>
@ -579,6 +580,7 @@ void SetupServerArgs(ArgsManager& argsman)
argsman.AddArg("-acceptnonstdtxn", strprintf("Relay and mine \"non-standard\" transactions (%sdefault: %u)", "testnet/regtest only; ", !testnetChainParams->RequireStandard()), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-incrementalrelayfee=<amt>", strprintf("Fee rate (in %s/kvB) used to define cost of relay, used for mempool limiting and replacement policy. (default: %s)", CURRENCY_UNIT, FormatMoney(DEFAULT_INCREMENTAL_RELAY_FEE)), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-dustrelayfee=<amt>", strprintf("Fee rate (in %s/kvB) used to define dust, the value of an output such that it will cost more than its value in fees at this fee rate to spend it. (default: %s)", CURRENCY_UNIT, FormatMoney(DUST_RELAY_TX_FEE)), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-acceptstalefeeestimates", strprintf("Read fee estimates even if they are stale (%sdefault: %u) fee estimates are considered stale if they are %s hours old", "regtest only; ", DEFAULT_ACCEPT_STALE_FEE_ESTIMATES, Ticks<std::chrono::hours>(MAX_FILE_AGE)), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
argsman.AddArg("-bytespersigop", strprintf("Equivalent bytes per sigop in transactions for relay and mining (default: %u)", DEFAULT_BYTES_PER_SIGOP), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-datacarrier", strprintf("Relay and mine data carrier transactions (default: %u)", DEFAULT_ACCEPT_DATACARRIER), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
argsman.AddArg("-datacarriersize", strprintf("Maximum size of data in data carrier transactions we relay and mine (default: %u)", MAX_OP_RETURN_RELAY), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
@ -1251,7 +1253,17 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
assert(!node.fee_estimator);
// Don't initialize fee estimation with old data if we don't relay transactions,
// as they would never get updated.
if (!ignores_incoming_txs) node.fee_estimator = std::make_unique<CBlockPolicyEstimator>(FeeestPath(args));
if (!ignores_incoming_txs) {
bool read_stale_estimates = args.GetBoolArg("-acceptstalefeeestimates", DEFAULT_ACCEPT_STALE_FEE_ESTIMATES);
if (read_stale_estimates && (chainparams.NetworkIDString() != CBaseChainParams::REGTEST)) {
return InitError(strprintf(_("acceptstalefeeestimates is not supported on %s chain."), chainparams.NetworkIDString()));
}
node.fee_estimator = std::make_unique<CBlockPolicyEstimator>(FeeestPath(args), read_stale_estimates);
// Flush estimates to disk periodically
CBlockPolicyEstimator* fee_estimator = node.fee_estimator.get();
node.scheduler->scheduleEvery([fee_estimator] { fee_estimator->FlushFeeEstimates(); }, FEE_FLUSH_INTERVAL);
}
// Check port numbers
for (const std::string port_option : {

View File

@ -124,7 +124,11 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
data.clear();
const auto dec = bech32::Decode(str);
if ((dec.encoding == bech32::Encoding::BECH32 || dec.encoding == bech32::Encoding::BECH32M) && dec.data.size() > 0) {
if (dec.encoding == bech32::Encoding::BECH32 || dec.encoding == bech32::Encoding::BECH32M) {
if (dec.data.empty()) {
error_str = "Empty Bech32 data section";
return CNoDestination();
}
// Bech32 decoding
if (dec.hrp != params.Bech32HRP()) {
error_str = strprintf("Invalid or unsupported prefix for Segwit (Bech32) address (expected %s, got %s).", params.Bech32HRP(), dec.hrp);
@ -158,7 +162,7 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
}
}
error_str = "Invalid Bech32 v0 address data size";
error_str = strprintf("Invalid Bech32 v0 address program size (%s byte), per BIP141", data.size());
return CNoDestination();
}
@ -175,7 +179,7 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
}
if (data.size() < 2 || data.size() > BECH32_WITNESS_PROG_MAX_LEN) {
error_str = "Invalid Bech32 address data size";
error_str = strprintf("Invalid Bech32 address program size (%s byte)", data.size());
return CNoDestination();
}
@ -184,6 +188,9 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
std::copy(data.begin(), data.end(), unk.program);
unk.length = data.size();
return unk;
} else {
error_str = strprintf("Invalid padding in Bech32 data section");
return CNoDestination();
}
}

View File

@ -2939,13 +2939,13 @@ void CaptureMessageToFile(const CAddress& addr,
AutoFile f{fsbridge::fopen(path, "ab")};
ser_writedata64(f, now.count());
f.write(MakeByteSpan(msg_type));
f << Span{msg_type};
for (auto i = msg_type.length(); i < CMessageHeader::COMMAND_SIZE; ++i) {
f << uint8_t{'\0'};
}
uint32_t size = data.size();
ser_writedata32(f, size);
f.write(AsBytes(data));
f << data;
}
std::function<void(const CAddress& addr,

View File

@ -200,7 +200,9 @@ public:
int nVersion;
std::string cleanSubVer;
bool fInbound;
// We requested high bandwidth connection to peer
bool m_bip152_highbandwidth_to;
// Peer requested high bandwidth connection
bool m_bip152_highbandwidth_from;
int m_starting_height;
uint64_t nSendBytes;

View File

@ -433,7 +433,6 @@ struct CNodeState {
std::list<QueuedBlock> vBlocksInFlight;
//! When the first entry in vBlocksInFlight started downloading. Don't care when vBlocksInFlight is empty.
std::chrono::microseconds m_downloading_since{0us};
int nBlocksInFlight{0};
//! Whether we consider this a preferred download peer.
bool fPreferredDownload{false};
/** Whether this peer wants invs or cmpctblocks (when possible) for block announcements. */
@ -879,11 +878,17 @@ private:
/** Have we requested this block from a peer */
bool IsBlockRequested(const uint256& hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
/** Have we requested this block from an outbound peer */
bool IsBlockRequestedFromOutbound(const uint256& hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
/** Remove this block from our tracked requested blocks. Called if:
* - the block has been received from a peer
* - the request for the block has timed out
* If "from_peer" is specified, then only remove the block if it is in
* flight from that peer (to avoid one peer's network traffic from
* affecting another's state).
*/
void RemoveBlockRequest(const uint256& hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
void RemoveBlockRequest(const uint256& hash, std::optional<NodeId> from_peer) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
/* Mark a block as in flight
* Returns false, still setting pit, if the block was already in flight from the same peer
@ -898,7 +903,9 @@ private:
*/
void FindNextBlocksToDownload(const Peer& peer, unsigned int count, std::vector<const CBlockIndex*>& vBlocks, NodeId& nodeStaller) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
std::map<uint256, std::pair<NodeId, std::list<QueuedBlock>::iterator> > mapBlocksInFlight GUARDED_BY(cs_main);
/* Multimap used to preserve insertion order */
typedef std::multimap<uint256, std::pair<NodeId, std::list<QueuedBlock>::iterator>> BlockDownloadMap;
BlockDownloadMap mapBlocksInFlight GUARDED_BY(cs_main);
/** When our tip was last updated. */
std::atomic<std::chrono::seconds> m_last_tip_update{0s};
@ -1116,34 +1123,55 @@ std::chrono::microseconds PeerManagerImpl::NextInvToInbounds(std::chrono::micros
bool PeerManagerImpl::IsBlockRequested(const uint256& hash)
{
return mapBlocksInFlight.find(hash) != mapBlocksInFlight.end();
return mapBlocksInFlight.count(hash);
}
void PeerManagerImpl::RemoveBlockRequest(const uint256& hash)
bool PeerManagerImpl::IsBlockRequestedFromOutbound(const uint256& hash)
{
auto it = mapBlocksInFlight.find(hash);
if (it == mapBlocksInFlight.end()) {
// Block was not requested
for (auto range = mapBlocksInFlight.equal_range(hash); range.first != range.second; range.first++) {
auto [nodeid, block_it] = range.first->second;
CNodeState& nodestate = *Assert(State(nodeid));
if (!nodestate.m_is_inbound) return true;
}
return false;
}
void PeerManagerImpl::RemoveBlockRequest(const uint256& hash, std::optional<NodeId> from_peer)
{
auto range = mapBlocksInFlight.equal_range(hash);
if (range.first == range.second) {
// Block was not requested from any peer
return;
}
auto [node_id, list_it] = it->second;
CNodeState *state = State(node_id);
assert(state != nullptr);
// We should not have requested too many of this block
Assume(mapBlocksInFlight.count(hash) <= MAX_CMPCTBLOCKS_INFLIGHT_PER_BLOCK);
if (state->vBlocksInFlight.begin() == list_it) {
// First block on the queue was received, update the start download time for the next one
state->m_downloading_since = std::max(state->m_downloading_since, GetTime<std::chrono::microseconds>());
}
state->vBlocksInFlight.erase(list_it);
while (range.first != range.second) {
auto [node_id, list_it] = range.first->second;
state->nBlocksInFlight--;
if (state->nBlocksInFlight == 0) {
// Last validated block on the queue was received.
m_peers_downloading_from--;
if (from_peer && *from_peer != node_id) {
range.first++;
continue;
}
CNodeState& state = *Assert(State(node_id));
if (state.vBlocksInFlight.begin() == list_it) {
// First block on the queue was received, update the start download time for the next one
state.m_downloading_since = std::max(state.m_downloading_since, GetTime<std::chrono::microseconds>());
}
state.vBlocksInFlight.erase(list_it);
if (state.vBlocksInFlight.empty()) {
// Last validated block on the queue for this peer was received.
m_peers_downloading_from--;
}
state.m_stalling_since = 0us;
range.first = mapBlocksInFlight.erase(range.first);
}
state->m_stalling_since = 0us;
mapBlocksInFlight.erase(it);
}
bool PeerManagerImpl::BlockRequested(NodeId nodeid, const CBlockIndex& block, std::list<QueuedBlock>::iterator** pit)
@ -1153,27 +1181,29 @@ bool PeerManagerImpl::BlockRequested(NodeId nodeid, const CBlockIndex& block, st
CNodeState *state = State(nodeid);
assert(state != nullptr);
Assume(mapBlocksInFlight.count(hash) <= MAX_CMPCTBLOCKS_INFLIGHT_PER_BLOCK);
// Short-circuit most stuff in case it is from the same node
std::map<uint256, std::pair<NodeId, std::list<QueuedBlock>::iterator> >::iterator itInFlight = mapBlocksInFlight.find(hash);
if (itInFlight != mapBlocksInFlight.end() && itInFlight->second.first == nodeid) {
if (pit) {
*pit = &itInFlight->second.second;
for (auto range = mapBlocksInFlight.equal_range(hash); range.first != range.second; range.first++) {
if (range.first->second.first == nodeid) {
if (pit) {
*pit = &range.first->second.second;
}
return false;
}
return false;
}
// Make sure it's not listed somewhere already.
RemoveBlockRequest(hash);
// Make sure it's not being fetched already from same peer.
RemoveBlockRequest(hash, nodeid);
std::list<QueuedBlock>::iterator it = state->vBlocksInFlight.insert(state->vBlocksInFlight.end(),
{&block, std::unique_ptr<PartiallyDownloadedBlock>(pit ? new PartiallyDownloadedBlock(&m_mempool) : nullptr)});
state->nBlocksInFlight++;
if (state->nBlocksInFlight == 1) {
if (state->vBlocksInFlight.size() == 1) {
// We're starting a block download (batch) from this peer.
state->m_downloading_since = GetTime<std::chrono::microseconds>();
m_peers_downloading_from++;
}
itInFlight = mapBlocksInFlight.insert(std::make_pair(hash, std::make_pair(nodeid, it))).first;
auto itInFlight = mapBlocksInFlight.insert(std::make_pair(hash, std::make_pair(nodeid, it)));
if (pit) {
*pit = &itInFlight->second.second;
}
@ -1376,7 +1406,7 @@ void PeerManagerImpl::FindNextBlocksToDownload(const Peer& peer, unsigned int co
}
} else if (waitingfor == -1) {
// This is the first already-in-flight block.
waitingfor = mapBlocksInFlight[pindex->GetBlockHash()].first;
waitingfor = mapBlocksInFlight.lower_bound(pindex->GetBlockHash())->second.first;
}
}
}
@ -1506,13 +1536,21 @@ void PeerManagerImpl::FinalizeNode(const CNode& node)
nSyncStarted--;
for (const QueuedBlock& entry : state->vBlocksInFlight) {
mapBlocksInFlight.erase(entry.pindex->GetBlockHash());
auto range = mapBlocksInFlight.equal_range(entry.pindex->GetBlockHash());
while (range.first != range.second) {
auto [node_id, list_it] = range.first->second;
if (node_id != nodeid) {
range.first++;
} else {
range.first = mapBlocksInFlight.erase(range.first);
}
}
}
m_orphanage.EraseForPeer(nodeid);
m_txrequest.DisconnectedPeer(nodeid);
if (m_txreconciliation) m_txreconciliation->ForgetPeer(nodeid);
m_num_preferred_download_peers -= state->fPreferredDownload;
m_peers_downloading_from -= (state->nBlocksInFlight != 0);
m_peers_downloading_from -= (!state->vBlocksInFlight.empty());
assert(m_peers_downloading_from >= 0);
m_outbound_peers_with_protect_from_disconnect -= state->m_chain_sync.m_protect;
assert(m_outbound_peers_with_protect_from_disconnect >= 0);
@ -1753,11 +1791,10 @@ std::optional<std::string> PeerManagerImpl::FetchBlock(NodeId peer_id, const CBl
LOCK(cs_main);
// Mark block as in-flight unless it already is (for this peer).
// If the peer does not send us a block, vBlocksInFlight remains non-empty,
// causing us to timeout and disconnect.
// If a block was already in-flight for a different peer, its BLOCKTXN
// response will be dropped.
// Forget about all prior requests
RemoveBlockRequest(block_index.GetBlockHash(), std::nullopt);
// Mark block as in-flight
if (!BlockRequested(peer_id, block_index)) return "Already requested from this peer";
// Construct message to request the block
@ -2673,7 +2710,7 @@ void PeerManagerImpl::HeadersDirectFetchBlocks(CNode& pfrom, const Peer& peer, c
std::vector<CInv> vGetData;
// Download as much as possible, from earliest to latest.
for (const CBlockIndex *pindex : reverse_iterate(vToFetch)) {
if (nodestate->nBlocksInFlight >= MAX_BLOCKS_IN_TRANSIT_PER_PEER) {
if (nodestate->vBlocksInFlight.size() >= MAX_BLOCKS_IN_TRANSIT_PER_PEER) {
// Can't download any more from this peer
break;
}
@ -3154,6 +3191,11 @@ void PeerManagerImpl::ProcessBlock(CNode& node, const std::shared_ptr<const CBlo
m_chainman.ProcessNewBlock(block, force_processing, min_pow_checked, &new_block);
if (new_block) {
node.m_last_block_time = GetTime<std::chrono::seconds>();
// In case this block came from a different peer than we requested
// from, we can erase the block request now anyway (as we just stored
// this block to disk).
LOCK(cs_main);
RemoveBlockRequest(block->GetHash(), std::nullopt);
} else {
LOCK(cs_main);
mapBlockSource.erase(block->GetHash());
@ -4259,15 +4301,27 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
nodestate->m_last_block_announcement = GetTime();
}
std::map<uint256, std::pair<NodeId, std::list<QueuedBlock>::iterator> >::iterator blockInFlightIt = mapBlocksInFlight.find(pindex->GetBlockHash());
bool fAlreadyInFlight = blockInFlightIt != mapBlocksInFlight.end();
if (pindex->nStatus & BLOCK_HAVE_DATA) // Nothing to do here
return;
auto range_flight = mapBlocksInFlight.equal_range(pindex->GetBlockHash());
size_t already_in_flight = std::distance(range_flight.first, range_flight.second);
bool requested_block_from_this_peer{false};
// Multimap ensures ordering of outstanding requests. It's either empty or first in line.
bool first_in_flight = already_in_flight == 0 || (range_flight.first->second.first == pfrom.GetId());
while (range_flight.first != range_flight.second) {
if (range_flight.first->second.first == pfrom.GetId()) {
requested_block_from_this_peer = true;
break;
}
range_flight.first++;
}
if (pindex->nChainWork <= m_chainman.ActiveChain().Tip()->nChainWork || // We know something better
pindex->nTx != 0) { // We had this block at some point, but pruned it
if (fAlreadyInFlight) {
if (requested_block_from_this_peer) {
// We requested this block for some reason, but our mempool will probably be useless
// so we just grab the block via normal getdata
std::vector<CInv> vInv(1);
@ -4278,15 +4332,15 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
}
// If we're not close to tip yet, give up and let parallel block fetch work its magic
if (!fAlreadyInFlight && !CanDirectFetch()) {
if (!already_in_flight && !CanDirectFetch()) {
return;
}
// We want to be a bit conservative just to be extra careful about DoS
// possibilities in compact block processing...
if (pindex->nHeight <= m_chainman.ActiveChain().Height() + 2) {
if ((!fAlreadyInFlight && nodestate->nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER) ||
(fAlreadyInFlight && blockInFlightIt->second.first == pfrom.GetId())) {
if ((already_in_flight < MAX_CMPCTBLOCKS_INFLIGHT_PER_BLOCK && nodestate->vBlocksInFlight.size() < MAX_BLOCKS_IN_TRANSIT_PER_PEER) ||
requested_block_from_this_peer) {
std::list<QueuedBlock>::iterator* queuedBlockIt = nullptr;
if (!BlockRequested(pfrom.GetId(), *pindex, &queuedBlockIt)) {
if (!(*queuedBlockIt)->partialBlock)
@ -4301,14 +4355,19 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
PartiallyDownloadedBlock& partialBlock = *(*queuedBlockIt)->partialBlock;
ReadStatus status = partialBlock.InitData(cmpctblock, vExtraTxnForCompact);
if (status == READ_STATUS_INVALID) {
RemoveBlockRequest(pindex->GetBlockHash()); // Reset in-flight state in case Misbehaving does not result in a disconnect
RemoveBlockRequest(pindex->GetBlockHash(), pfrom.GetId()); // Reset in-flight state in case Misbehaving does not result in a disconnect
Misbehaving(*peer, 100, "invalid compact block");
return;
} else if (status == READ_STATUS_FAILED) {
// Duplicate txindexes, the block is now in-flight, so just request it
std::vector<CInv> vInv(1);
vInv[0] = CInv(MSG_BLOCK | GetFetchFlags(*peer), blockhash);
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETDATA, vInv));
if (first_in_flight) {
// Duplicate txindexes, the block is now in-flight, so just request it
std::vector<CInv> vInv(1);
vInv[0] = CInv(MSG_BLOCK | GetFetchFlags(*peer), blockhash);
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETDATA, vInv));
} else {
// Give up for this peer and wait for other peer(s)
RemoveBlockRequest(pindex->GetBlockHash(), pfrom.GetId());
}
return;
}
@ -4323,9 +4382,24 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
txn.blockhash = blockhash;
blockTxnMsg << txn;
fProcessBLOCKTXN = true;
} else {
} else if (first_in_flight) {
// We will try to round-trip any compact blocks we get on failure,
// as long as it's first...
req.blockhash = pindex->GetBlockHash();
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETBLOCKTXN, req));
} else if (pfrom.m_bip152_highbandwidth_to &&
(!pfrom.IsInboundConn() ||
IsBlockRequestedFromOutbound(blockhash) ||
already_in_flight < MAX_CMPCTBLOCKS_INFLIGHT_PER_BLOCK - 1)) {
// ... or it's a hb relay peer and:
// - peer is outbound, or
// - we already have an outbound attempt in flight(so we'll take what we can get), or
// - it's not the final parallel download slot (which we may reserve for first outbound)
req.blockhash = pindex->GetBlockHash();
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETBLOCKTXN, req));
} else {
// Give up for this peer and wait for other peer(s)
RemoveBlockRequest(pindex->GetBlockHash(), pfrom.GetId());
}
} else {
// This block is either already in flight from a different
@ -4346,7 +4420,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
}
}
} else {
if (fAlreadyInFlight) {
if (requested_block_from_this_peer) {
// We requested this block, but its far into the future, so our
// mempool will probably be useless - request the block normally
std::vector<CInv> vInv(1);
@ -4396,7 +4470,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// process from some other peer. We do this after calling
// ProcessNewBlock so that a malleated cmpctblock announcement
// can't be used to interfere with block relay.
RemoveBlockRequest(pblock->GetHash());
RemoveBlockRequest(pblock->GetHash(), std::nullopt);
}
}
return;
@ -4418,24 +4492,44 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
{
LOCK(cs_main);
std::map<uint256, std::pair<NodeId, std::list<QueuedBlock>::iterator> >::iterator it = mapBlocksInFlight.find(resp.blockhash);
if (it == mapBlocksInFlight.end() || !it->second.second->partialBlock ||
it->second.first != pfrom.GetId()) {
auto range_flight = mapBlocksInFlight.equal_range(resp.blockhash);
size_t already_in_flight = std::distance(range_flight.first, range_flight.second);
bool requested_block_from_this_peer{false};
// Multimap ensures ordering of outstanding requests. It's either empty or first in line.
bool first_in_flight = already_in_flight == 0 || (range_flight.first->second.first == pfrom.GetId());
while (range_flight.first != range_flight.second) {
auto [node_id, block_it] = range_flight.first->second;
if (node_id == pfrom.GetId() && block_it->partialBlock) {
requested_block_from_this_peer = true;
break;
}
range_flight.first++;
}
if (!requested_block_from_this_peer) {
LogPrint(BCLog::NET, "Peer %d sent us block transactions for block we weren't expecting\n", pfrom.GetId());
return;
}
PartiallyDownloadedBlock& partialBlock = *it->second.second->partialBlock;
PartiallyDownloadedBlock& partialBlock = *range_flight.first->second.second->partialBlock;
ReadStatus status = partialBlock.FillBlock(*pblock, resp.txn);
if (status == READ_STATUS_INVALID) {
RemoveBlockRequest(resp.blockhash); // Reset in-flight state in case Misbehaving does not result in a disconnect
RemoveBlockRequest(resp.blockhash, pfrom.GetId()); // Reset in-flight state in case Misbehaving does not result in a disconnect
Misbehaving(*peer, 100, "invalid compact block/non-matching block transactions");
return;
} else if (status == READ_STATUS_FAILED) {
// Might have collided, fall back to getdata now :(
std::vector<CInv> invs;
invs.push_back(CInv(MSG_BLOCK | GetFetchFlags(*peer), resp.blockhash));
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETDATA, invs));
if (first_in_flight) {
// Might have collided, fall back to getdata now :(
std::vector<CInv> invs;
invs.push_back(CInv(MSG_BLOCK | GetFetchFlags(*peer), resp.blockhash));
m_connman.PushMessage(&pfrom, msgMaker.Make(NetMsgType::GETDATA, invs));
} else {
RemoveBlockRequest(resp.blockhash, pfrom.GetId());
LogPrint(BCLog::NET, "Peer %d sent us a compact block but it failed to reconstruct, waiting on first download to complete\n", pfrom.GetId());
return;
}
} else {
// Block is either okay, or possibly we received
// READ_STATUS_CHECKBLOCK_FAILED.
@ -4454,7 +4548,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// though the block was successfully read, and rely on the
// handling in ProcessNewBlock to ensure the block index is
// updated, etc.
RemoveBlockRequest(resp.blockhash); // it is now an empty pointer
RemoveBlockRequest(resp.blockhash, pfrom.GetId()); // it is now an empty pointer
fBlockRead = true;
// mapBlockSource is used for potentially punishing peers and
// updating which peers send us compact blocks, so the race
@ -4535,6 +4629,17 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
LogPrint(BCLog::NET, "received block %s peer=%d\n", pblock->GetHash().ToString(), pfrom.GetId());
const CBlockIndex* prev_block{WITH_LOCK(m_chainman.GetMutex(), return m_chainman.m_blockman.LookupBlockIndex(pblock->hashPrevBlock))};
// Check for possible mutation if it connects to something we know so we can check for DEPLOYMENT_SEGWIT being active
if (prev_block && IsBlockMutated(/*block=*/*pblock,
/*check_witness_root=*/DeploymentActiveAfter(prev_block, m_chainman, Consensus::DEPLOYMENT_SEGWIT))) {
LogPrint(BCLog::NET, "Received mutated block from peer=%d\n", peer->m_id);
Misbehaving(*peer, 100, "mutated block");
WITH_LOCK(cs_main, RemoveBlockRequest(pblock->GetHash(), peer->m_id));
return;
}
bool forceProcessing = false;
const uint256 hash(pblock->GetHash());
bool min_pow_checked = false;
@ -4543,14 +4648,13 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// Always process the block if we requested it, since we may
// need it even when it's not a candidate for a new best tip.
forceProcessing = IsBlockRequested(hash);
RemoveBlockRequest(hash);
RemoveBlockRequest(hash, pfrom.GetId());
// mapBlockSource is only used for punishing peers and setting
// which peers send us compact blocks, so the race between here and
// cs_main in ProcessNewBlock is fine.
mapBlockSource.emplace(hash, std::make_pair(pfrom.GetId(), true));
// Check work on this block against our anti-dos thresholds.
const CBlockIndex* prev_block = m_chainman.m_blockman.LookupBlockIndex(pblock->hashPrevBlock);
if (prev_block && prev_block->nChainWork + CalculateHeadersWork({pblock->GetBlockHeader()}) >= GetAntiDoSWorkThreshold()) {
min_pow_checked = true;
}
@ -5026,14 +5130,14 @@ void PeerManagerImpl::EvictExtraOutboundPeers(std::chrono::seconds now)
// valid headers chain with at least as much work as our tip.
CNodeState *node_state = State(pnode->GetId());
if (node_state == nullptr ||
(now - pnode->m_connected >= MINIMUM_CONNECT_TIME && node_state->nBlocksInFlight == 0)) {
(now - pnode->m_connected >= MINIMUM_CONNECT_TIME && node_state->vBlocksInFlight.empty())) {
pnode->fDisconnect = true;
LogPrint(BCLog::NET, "disconnecting extra block-relay-only peer=%d (last block received at time %d)\n",
pnode->GetId(), count_seconds(pnode->m_last_block_time));
return true;
} else {
LogPrint(BCLog::NET, "keeping block-relay-only peer=%d chosen for eviction (connect time: %d, blocks_in_flight: %d)\n",
pnode->GetId(), count_seconds(pnode->m_connected), node_state->nBlocksInFlight);
pnode->GetId(), count_seconds(pnode->m_connected), node_state->vBlocksInFlight.size());
}
return false;
});
@ -5073,13 +5177,13 @@ void PeerManagerImpl::EvictExtraOutboundPeers(std::chrono::seconds now)
// Also don't disconnect any peer we're trying to download a
// block from.
CNodeState &state = *State(pnode->GetId());
if (now - pnode->m_connected > MINIMUM_CONNECT_TIME && state.nBlocksInFlight == 0) {
if (now - pnode->m_connected > MINIMUM_CONNECT_TIME && state.vBlocksInFlight.empty()) {
LogPrint(BCLog::NET, "disconnecting extra outbound peer=%d (last block announcement received at time %d)\n", pnode->GetId(), oldest_block_announcement);
pnode->fDisconnect = true;
return true;
} else {
LogPrint(BCLog::NET, "keeping outbound peer=%d chosen for eviction (connect time: %d, blocks_in_flight: %d)\n",
pnode->GetId(), count_seconds(pnode->m_connected), state.nBlocksInFlight);
pnode->GetId(), count_seconds(pnode->m_connected), state.vBlocksInFlight.size());
return false;
}
});
@ -5660,7 +5764,9 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
// especially since we have many peers and some will draw much shorter delays.
unsigned int nRelayedTransactions = 0;
LOCK(tx_relay->m_bloom_filter_mutex);
while (!vInvTx.empty() && nRelayedTransactions < INVENTORY_BROADCAST_MAX) {
size_t broadcast_max{INVENTORY_BROADCAST_MAX + (tx_relay->m_tx_inventory_to_send.size()/1000)*5};
broadcast_max = std::min<size_t>(1000, broadcast_max);
while (!vInvTx.empty() && nRelayedTransactions < broadcast_max) {
// Fetch the top element from the heap
std::pop_heap(vInvTx.begin(), vInvTx.end(), compareInvMempoolOrder);
std::set<uint256>::iterator it = vInvTx.back();
@ -5797,10 +5903,10 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
// Message: getdata (blocks)
//
std::vector<CInv> vGetData;
if (CanServeBlocks(*peer) && ((sync_blocks_and_headers_from_peer && !IsLimitedPeer(*peer)) || !m_chainman.ActiveChainstate().IsInitialBlockDownload()) && state.nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER) {
if (CanServeBlocks(*peer) && ((sync_blocks_and_headers_from_peer && !IsLimitedPeer(*peer)) || !m_chainman.ActiveChainstate().IsInitialBlockDownload()) && state.vBlocksInFlight.size() < MAX_BLOCKS_IN_TRANSIT_PER_PEER) {
std::vector<const CBlockIndex*> vToDownload;
NodeId staller = -1;
FindNextBlocksToDownload(*peer, MAX_BLOCKS_IN_TRANSIT_PER_PEER - state.nBlocksInFlight, vToDownload, staller);
FindNextBlocksToDownload(*peer, MAX_BLOCKS_IN_TRANSIT_PER_PEER - state.vBlocksInFlight.size(), vToDownload, staller);
for (const CBlockIndex *pindex : vToDownload) {
uint32_t nFetchFlags = GetFetchFlags(*peer);
vGetData.push_back(CInv(MSG_BLOCK | nFetchFlags, pindex->GetBlockHash()));
@ -5808,7 +5914,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
LogPrint(BCLog::NET, "Requesting block %s (%d) peer=%d\n", pindex->GetBlockHash().ToString(),
pindex->nHeight, pto->GetId());
}
if (state.nBlocksInFlight == 0 && staller != -1) {
if (state.vBlocksInFlight.empty() && staller != -1) {
if (State(staller)->m_stalling_since == 0us) {
State(staller)->m_stalling_since = current_time;
LogPrint(BCLog::NET, "Stall started peer=%d\n", staller);

View File

@ -22,6 +22,8 @@ static const bool DEFAULT_PEERBLOOMFILTERS = false;
static const bool DEFAULT_PEERBLOCKFILTERS = false;
/** Threshold for marking a node to be discouraged, e.g. disconnected and added to the discouragement filter. */
static const int DISCOURAGEMENT_THRESHOLD{100};
/** Maximum number of outstanding CMPCTBLOCK requests for the same block. */
static const unsigned int MAX_CMPCTBLOCKS_INFLIGHT_PER_BLOCK = 3;
struct CNodeStateStats {
int nSyncHeight = -1;

View File

@ -24,6 +24,7 @@
#include <algorithm>
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstddef>
#include <cstdint>
@ -527,7 +528,7 @@ bool CBlockPolicyEstimator::_removeTx(const uint256& hash, bool inBlock)
}
}
CBlockPolicyEstimator::CBlockPolicyEstimator(const fs::path& estimation_filepath)
CBlockPolicyEstimator::CBlockPolicyEstimator(const fs::path& estimation_filepath, const bool read_stale_estimates)
: m_estimation_filepath{estimation_filepath}
{
static_assert(MIN_BUCKET_FEERATE > 0, "Min feerate must be nonzero");
@ -545,9 +546,22 @@ CBlockPolicyEstimator::CBlockPolicyEstimator(const fs::path& estimation_filepath
shortStats = std::unique_ptr<TxConfirmStats>(new TxConfirmStats(buckets, bucketMap, SHORT_BLOCK_PERIODS, SHORT_DECAY, SHORT_SCALE));
longStats = std::unique_ptr<TxConfirmStats>(new TxConfirmStats(buckets, bucketMap, LONG_BLOCK_PERIODS, LONG_DECAY, LONG_SCALE));
// If the fee estimation file is present, read recorded estimations
AutoFile est_file{fsbridge::fopen(m_estimation_filepath, "rb")};
if (est_file.IsNull() || !Read(est_file)) {
// Whenever the fee estimation file is not present return early
if (est_file.IsNull()) {
LogPrintf("%s is not found. Continue anyway.\n", fs::PathToString(m_estimation_filepath));
return;
}
std::chrono::hours file_age = GetFeeEstimatorFileAge();
// fee estimate file must not be too old to avoid wrong fee estimates.
if (file_age > MAX_FILE_AGE && !read_stale_estimates) {
LogPrintf("Fee estimation file %s too old (age=%lld > %lld hours) and will not be used to avoid serving stale estimates.\n", fs::PathToString(m_estimation_filepath), Ticks<std::chrono::hours>(file_age), Ticks<std::chrono::hours>(MAX_FILE_AGE));
return;
}
if (!Read(est_file)) {
LogPrintf("Failed to read fee estimates from %s. Continue anyway.\n", fs::PathToString(m_estimation_filepath));
}
}
@ -903,10 +917,16 @@ CFeeRate CBlockPolicyEstimator::estimateSmartFee(int confTarget, FeeCalculation
void CBlockPolicyEstimator::Flush() {
FlushUnconfirmed();
FlushFeeEstimates();
}
void CBlockPolicyEstimator::FlushFeeEstimates()
{
AutoFile est_file{fsbridge::fopen(m_estimation_filepath, "wb")};
if (est_file.IsNull() || !Write(est_file)) {
LogPrintf("Failed to write fee estimates to %s. Continue anyway.\n", fs::PathToString(m_estimation_filepath));
} else {
LogPrintf("Flushed fee estimates to %s.\n", fs::PathToString(m_estimation_filepath.filename()));
}
}
@ -1011,6 +1031,13 @@ void CBlockPolicyEstimator::FlushUnconfirmed()
LogPrint(BCLog::ESTIMATEFEE, "Recorded %u unconfirmed txs from mempool in %gs\n", num_entries, Ticks<SecondsDouble>(endclear - startclear));
}
std::chrono::hours CBlockPolicyEstimator::GetFeeEstimatorFileAge()
{
auto file_time = std::filesystem::last_write_time(m_estimation_filepath);
auto now = std::filesystem::file_time_type::clock::now();
return std::chrono::duration_cast<std::chrono::hours>(now - file_time);
}
static std::set<double> MakeFeeSet(const CFeeRate& min_incremental_fee,
double max_filter_fee_rate,
double fee_filter_spacing)

View File

@ -14,12 +14,25 @@
#include <util/fs.h>
#include <array>
#include <chrono>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
// How often to flush fee estimates to fee_estimates.dat.
static constexpr std::chrono::hours FEE_FLUSH_INTERVAL{1};
/** fee_estimates.dat that are more than 60 hours (2.5 days) will not be read,
* as the estimates in the file are stale.
*/
static constexpr std::chrono::hours MAX_FILE_AGE{60};
// Whether we allow importing a fee_estimates file older than MAX_FILE_AGE.
static constexpr bool DEFAULT_ACCEPT_STALE_FEE_ESTIMATES{false};
class AutoFile;
class CTxMemPoolEntry;
class TxConfirmStats;
@ -183,7 +196,7 @@ private:
const fs::path m_estimation_filepath;
public:
/** Create new BlockPolicyEstimator and initialize stats tracking classes with default values */
CBlockPolicyEstimator(const fs::path& estimation_filepath);
CBlockPolicyEstimator(const fs::path& estimation_filepath, const bool read_stale_estimates);
~CBlockPolicyEstimator();
/** Process all the transactions that have been included in a block */
@ -239,6 +252,13 @@ public:
void Flush()
EXCLUSIVE_LOCKS_REQUIRED(!m_cs_fee_estimator);
/** Record current fee estimations. */
void FlushFeeEstimates()
EXCLUSIVE_LOCKS_REQUIRED(!m_cs_fee_estimator);
/** Calculates the age of the file, since last modified */
std::chrono::hours GetFeeEstimatorFileAge();
private:
mutable Mutex m_cs_fee_estimator;

View File

@ -71,8 +71,10 @@ public:
// network and disk
std::vector<CTransactionRef> vtx;
// memory only
mutable bool fChecked;
// Memory-only flags for caching expensive checks
mutable bool fChecked; // CheckBlock()
mutable bool m_checked_witness_commitment{false}; // CheckWitnessCommitment()
mutable bool m_checked_merkle_root{false}; // CheckMerkleRoot()
CBlock()
{
@ -96,6 +98,8 @@ public:
CBlockHeader::SetNull();
vtx.clear();
fChecked = false;
m_checked_witness_commitment = false;
m_checked_merkle_root = false;
}
CBlockHeader GetBlockHeader() const

View File

@ -142,14 +142,14 @@ public:
{
unsigned int len = size();
::WriteCompactSize(s, len);
s.write(AsBytes(Span{vch, len}));
s << Span{vch, len};
}
template <typename Stream>
void Unserialize(Stream& s)
{
const unsigned int len(::ReadCompactSize(s));
if (len <= SIZE) {
s.read(AsWritableBytes(Span{vch, len}));
s >> Span{vch, len};
if (len != size()) {
Invalidate();
}

View File

@ -3,15 +3,20 @@
<file alias="am">locale/bitcoin_am.qm</file>
<file alias="ar">locale/bitcoin_ar.qm</file>
<file alias="az">locale/bitcoin_az.qm</file>
<file alias="az@latin">locale/bitcoin_az@latin.qm</file>
<file alias="be">locale/bitcoin_be.qm</file>
<file alias="bg">locale/bitcoin_bg.qm</file>
<file alias="bn">locale/bitcoin_bn.qm</file>
<file alias="br">locale/bitcoin_br.qm</file>
<file alias="bs">locale/bitcoin_bs.qm</file>
<file alias="ca">locale/bitcoin_ca.qm</file>
<file alias="cmn">locale/bitcoin_cmn.qm</file>
<file alias="cs">locale/bitcoin_cs.qm</file>
<file alias="cy">locale/bitcoin_cy.qm</file>
<file alias="da">locale/bitcoin_da.qm</file>
<file alias="de">locale/bitcoin_de.qm</file>
<file alias="de_AT">locale/bitcoin_de_AT.qm</file>
<file alias="de_CH">locale/bitcoin_de_CH.qm</file>
<file alias="el">locale/bitcoin_el.qm</file>
<file alias="en">locale/bitcoin_en.qm</file>
<file alias="eo">locale/bitcoin_eo.qm</file>
@ -20,6 +25,7 @@
<file alias="es_CO">locale/bitcoin_es_CO.qm</file>
<file alias="es_DO">locale/bitcoin_es_DO.qm</file>
<file alias="es_MX">locale/bitcoin_es_MX.qm</file>
<file alias="es_SV">locale/bitcoin_es_SV.qm</file>
<file alias="es_VE">locale/bitcoin_es_VE.qm</file>
<file alias="et">locale/bitcoin_et.qm</file>
<file alias="eu">locale/bitcoin_eu.qm</file>
@ -27,13 +33,18 @@
<file alias="fi">locale/bitcoin_fi.qm</file>
<file alias="fil">locale/bitcoin_fil.qm</file>
<file alias="fr">locale/bitcoin_fr.qm</file>
<file alias="fr_CM">locale/bitcoin_fr_CM.qm</file>
<file alias="fr_LU">locale/bitcoin_fr_LU.qm</file>
<file alias="ga">locale/bitcoin_ga.qm</file>
<file alias="ga_IE">locale/bitcoin_ga_IE.qm</file>
<file alias="gd">locale/bitcoin_gd.qm</file>
<file alias="gl">locale/bitcoin_gl.qm</file>
<file alias="gl_ES">locale/bitcoin_gl_ES.qm</file>
<file alias="gu">locale/bitcoin_gu.qm</file>
<file alias="ha">locale/bitcoin_ha.qm</file>
<file alias="hak">locale/bitcoin_hak.qm</file>
<file alias="he">locale/bitcoin_he.qm</file>
<file alias="hi">locale/bitcoin_hi.qm</file>
<file alias="hr">locale/bitcoin_hr.qm</file>
<file alias="hu">locale/bitcoin_hu.qm</file>
<file alias="id">locale/bitcoin_id.qm</file>
@ -44,6 +55,7 @@
<file alias="kk">locale/bitcoin_kk.qm</file>
<file alias="kl">locale/bitcoin_kl.qm</file>
<file alias="km">locale/bitcoin_km.qm</file>
<file alias="kn">locale/bitcoin_kn.qm</file>
<file alias="ko">locale/bitcoin_ko.qm</file>
<file alias="ku">locale/bitcoin_ku.qm</file>
<file alias="ku_IQ">locale/bitcoin_ku_IQ.qm</file>
@ -51,11 +63,14 @@
<file alias="la">locale/bitcoin_la.qm</file>
<file alias="lt">locale/bitcoin_lt.qm</file>
<file alias="lv">locale/bitcoin_lv.qm</file>
<file alias="mg">locale/bitcoin_mg.qm</file>
<file alias="mk">locale/bitcoin_mk.qm</file>
<file alias="ml">locale/bitcoin_ml.qm</file>
<file alias="mn">locale/bitcoin_mn.qm</file>
<file alias="mr">locale/bitcoin_mr.qm</file>
<file alias="mr_IN">locale/bitcoin_mr_IN.qm</file>
<file alias="ms">locale/bitcoin_ms.qm</file>
<file alias="mt">locale/bitcoin_mt.qm</file>
<file alias="my">locale/bitcoin_my.qm</file>
<file alias="nb">locale/bitcoin_nb.qm</file>
<file alias="ne">locale/bitcoin_ne.qm</file>
@ -73,8 +88,10 @@
<file alias="sk">locale/bitcoin_sk.qm</file>
<file alias="sl">locale/bitcoin_sl.qm</file>
<file alias="sn">locale/bitcoin_sn.qm</file>
<file alias="so">locale/bitcoin_so.qm</file>
<file alias="sq">locale/bitcoin_sq.qm</file>
<file alias="sr">locale/bitcoin_sr.qm</file>
<file alias="sr@ijekavianlatin">locale/bitcoin_sr@ijekavianlatin.qm</file>
<file alias="sr@latin">locale/bitcoin_sr@latin.qm</file>
<file alias="sv">locale/bitcoin_sv.qm</file>
<file alias="sw">locale/bitcoin_sw.qm</file>
@ -93,7 +110,9 @@
<file alias="uz@Latn">locale/bitcoin_uz@Latn.qm</file>
<file alias="vi">locale/bitcoin_vi.qm</file>
<file alias="yo">locale/bitcoin_yo.qm</file>
<file alias="yue">locale/bitcoin_yue.qm</file>
<file alias="zh-Hans">locale/bitcoin_zh-Hans.qm</file>
<file alias="zh-Hant">locale/bitcoin_zh-Hant.qm</file>
<file alias="zh">locale/bitcoin_zh.qm</file>
<file alias="zh_CN">locale/bitcoin_zh_CN.qm</file>
<file alias="zh_HK">locale/bitcoin_zh_HK.qm</file>

View File

@ -238,7 +238,6 @@ BitcoinGUI::~BitcoinGUI()
trayIcon->hide();
#ifdef Q_OS_MACOS
delete m_app_nap_inhibitor;
delete appMenuBar;
MacDockIconHandler::cleanup();
#endif
@ -466,13 +465,7 @@ void BitcoinGUI::createActions()
void BitcoinGUI::createMenuBar()
{
#ifdef Q_OS_MACOS
// Create a decoupled menu bar on Mac which stays even if the window is closed
appMenuBar = new QMenuBar();
#else
// Get the main window's menu bar on other platforms
appMenuBar = menuBar();
#endif
// Configure the menus
QMenu *file = appMenuBar->addMenu(tr("&File"));
@ -860,6 +853,7 @@ void BitcoinGUI::createTrayIconMenu()
// Note: On macOS, the Dock icon is used to provide the tray's functionality.
MacDockIconHandler* dockIconHandler = MacDockIconHandler::instance();
connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, [this] {
if (m_node.shutdownRequested()) return; // nothing to show, node is shutting down.
show();
activateWindow();
});
@ -871,6 +865,8 @@ void BitcoinGUI::createTrayIconMenu()
// See https://bugreports.qt.io/browse/QTBUG-91697
trayIconMenu.get(), &QMenu::aboutToShow,
[this, show_hide_action, send_action, receive_action, sign_action, verify_action, options_action, node_window_action, quit_action] {
if (m_node.shutdownRequested()) return; // nothing to do, node is shutting down.
if (show_hide_action) show_hide_action->setText(
(!isHidden() && !isMinimized() && !GUIUtil::isObscured(this)) ?
tr("&Hide") :

View File

@ -15,7 +15,7 @@
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation type="unfinished"> </translation>
<translation type="unfinished"> </translation>
</message>
<message>
<source>&amp;Copy</source>
@ -27,11 +27,15 @@
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished"> </translation>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished"> </translation>
<translation type="unfinished"> </translation>
</message>
<message>
<source>&amp;Export</source>
@ -43,7 +47,7 @@
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished">/ </translation>
<translation type="unfinished">/ </translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
@ -63,7 +67,13 @@
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation type="unfinished"> :: / ::</translation>
<translation type="unfinished"> :: / ::</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished"> "ተቀበል" "አዲስ የመቀበያ አድራሻ ይፍጠሩ"
"ሌጋሲ" </translation>
</message>
<message>
<source>&amp;Copy Address</source>
@ -82,6 +92,11 @@
<translation type="unfinished"> </translation>
</message>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<extracomment>An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</extracomment>
<translation type="unfinished"> %1 :: ::</translation>
@ -125,6 +140,10 @@
<translation type="unfinished"> - </translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished">- </translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished"> </translation>
</message>
@ -157,6 +176,18 @@
<translation type="unfinished"> </translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation type="unfinished">አስፈላጊ: . , ::</translation>
</message>
@ -201,8 +232,24 @@
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Internal error</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>An internal error occurred. %1 will attempt to continue safely. This is an unexpected bug which can be reported as described below.</source>
<translation type="unfinished"> %1 </translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Do you want to reset settings to default values, or to abort without making changes?</source>
<extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment>
<translation type="unfinished"> ? ?</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished"> %1</translation>
</message>
@ -213,43 +260,43 @@
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n second(s)</numerusform>
<numerusform>%n second(s)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n minute(s)</numerusform>
<numerusform>%n minute(s)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n hour(s)</numerusform>
<numerusform>%n hour(s)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n day(s)</numerusform>
<numerusform>%n day(s)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n week(s)</numerusform>
<numerusform>%n week(s)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n year(s)</numerusform>
<numerusform>%n year(s)</numerusform>
</translation>
</message>
</context>
@ -326,8 +373,8 @@
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>Processed %n block(s) of transaction history.</numerusform>
<numerusform>Processed %n block(s) of transaction history.</numerusform>
</translation>
</message>
<message>
@ -371,8 +418,8 @@
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n active connection(s) to Bitcoin network.</numerusform>
<numerusform>%n active connection(s) to Bitcoin network.</numerusform>
</translation>
</message>
<message>
@ -491,30 +538,30 @@
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n GB of space available</numerusform>
<numerusform>%n GB of space available</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(of %n GB needed)</numerusform>
<numerusform>(of %n GB needed)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(%n GB needed for full chain)</numerusform>
<numerusform>(%n GB needed for full chain)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(sufficient to restore backups %n day(s) old)</numerusform>
<numerusform>(sufficient to restore backups %n day(s) old)</numerusform>
</translation>
</message>
<message>
@ -629,8 +676,8 @@
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>Estimated to begin confirmation within %n block(s).</numerusform>
<numerusform>Estimated to begin confirmation within %n block(s).</numerusform>
</translation>
</message>
<message>
@ -647,8 +694,8 @@
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>matures in %n more block(s)</numerusform>
<numerusform>matures in %n more block(s)</numerusform>
</translation>
</message>
<message>
@ -674,6 +721,11 @@
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Date</source>
<translation type="unfinished"></translation>
</message>

File diff suppressed because it is too large Load Diff

View File

@ -275,14 +275,6 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
<translation type="unfinished">Ciddi xəta baş verdi. Ayarlar faylının yazılabilən olduğunu yoxlayın ya -nonsettings (ayarlarsız) parametri ilə işə salın.</translation>
</message>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Xəta: Göstərilmiş verilənlər qovluğu "%1" mövcud deyil</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">Xəta: Tənzimləmə faylını təhlil etmək mümkün deyil: %1</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">XƏta: %1</translation>
</message>
@ -291,6 +283,10 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
<translation type="unfinished">%1 hələ təhlükəsiz bağlanmayıb...</translation>
</message>
<message>
<source>unknown</source>
<translation type="unfinished">naməlum</translation>
</message>
<message>
<source>Amount</source>
<translation type="unfinished">Məbləğ</translation>
</message>
@ -338,41 +334,6 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Ayarlar faylı oxuna bilmədi</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Ayarlar faylı yazıla bilmədi</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation type="unfinished">Ödəniş təxmin edilmədi. Fallbackfee sıradan çıxarıldı. Bir neçə blok gözləyin ya Fallbackfee-ni fəallaşdırın.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation type="unfinished">Xəbərdarlıq: Gizli açarlar, sıradan çıxarılmış gizli açarlar ilə {%s} pulqabısında aşkarlandı.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation type="unfinished">'%s' verilənlər kateqoriyasına yazıla bilmir; icazələri yoxlayın.</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Yükləmə tamamlandı</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Yetərsiz balans</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Mənbə kodu %s-dən əldə edilə bilər.</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -548,16 +509,12 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
<translation type="unfinished">Bloklar diskdə icra olunur...</translation>
</message>
<message>
<source>Reindexing blocks on disk</source>
<translation type="unfinished">Bloklar diskdə təkrar indekslənir...</translation>
</message>
<message>
<source>Connecting to peers</source>
<translation type="unfinished">İştirakçılara qoşulur...</translation>
</message>
<message>
<source>Request payments (generates QR codes and bitcoin: URIs)</source>
<translation type="unfinished">Ödəmə tələbi (QR-kodlar Bitcoin URI-ləri yaradılır):</translation>
<translation type="unfinished">Ödəmə tələbi (QR-kodlar Bitcoin URI-ləri yaradılır)^</translation>
</message>
<message>
<source>Show the list of used sending addresses and labels</source>
@ -565,7 +522,7 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
</message>
<message>
<source>Show the list of used receiving addresses and labels</source>
<translation type="unfinished">İstifadə edilmiş qəbuletmə ünvanlarının etiketlərin siyahısını göstərmək</translation>
<translation type="unfinished">İstifadə edilmiş </translation>
</message>
<message>
<source>&amp;Command-line options</source>
@ -580,7 +537,7 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
</message>
<message>
<source>%1 behind</source>
<translation type="unfinished">%1 geridə qalır</translation>
<translation type="unfinished">%1 geridə qaldı</translation>
</message>
<message>
<source>Catching up</source>
@ -762,7 +719,7 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">XƏta: %1</translation>
<translation type="unfinished">Xəta: %1</translation>
</message>
<message>
<source>Warning: %1</source>
@ -1268,6 +1225,10 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
<source>version</source>
<translation type="unfinished">versiya</translation>
</message>
<message>
<source>About %1</source>
<translation type="unfinished">Haqqında %1</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
@ -1559,6 +1520,10 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
<source>Date</source>
<translation type="unfinished">Tarix</translation>
</message>
<message>
<source>unknown</source>
<translation type="unfinished">naməlum</translation>
</message>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
@ -1668,4 +1633,35 @@ Daxil olma, yalnız 'qanuni' tipli ünvanlar ilə mümkündür.</translation>
<translation type="unfinished">Ləğv et</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation type="unfinished">Xəbərdarlıq: Gizli açarlar, sıradan çıxarılmış gizli açarlar ilə {%s} pulqabısında aşkarlandı.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation type="unfinished">'%s' verilənlər kateqoriyasına yazıla bilmir; icazələri yoxlayın.</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Yükləmə tamamlandı</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Yetərsiz balans</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Mənbə kodu %s-dən əldə edilə bilər.</translation>
</message>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Ayarlar faylı oxuna bilmədi</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Ayarlar faylı yazıla bilmədi</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

View File

@ -261,57 +261,6 @@
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ці жадаеце вы перабудаваць зараз базу звестак блокаў?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Загрузка выканана</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Памылка ініцыялізацыі базвы звестак блокаў</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Памалка ініцыялізацыі асяроддзя базы звестак гаманца %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Памылка загрузкі базвы звестак блокаў</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Памылка адчынення базы звестак блокаў</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Недастаткова сродкаў</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Не хапае файлавых дэскрыптараў.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Памылка подпісу транзакцыі</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Гэта эксперыментальная праграма.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Транзакцыя занадта малая</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Транзакцыя занадта вялікая</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -1162,4 +1111,55 @@
<translation type="unfinished">Экспартаваць гэтыя звесткі у файл</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ці жадаеце вы перабудаваць зараз базу звестак блокаў?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Загрузка выканана</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Памылка ініцыялізацыі базвы звестак блокаў</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Памалка ініцыялізацыі асяроддзя базы звестак гаманца %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Памылка загрузкі базвы звестак блокаў</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Памылка адчынення базы звестак блокаў</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Недастаткова сродкаў</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Не хапае файлавых дэскрыптараў.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Памылка подпісу транзакцыі</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Гэта эксперыментальная праграма.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Транзакцыя занадта малая</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Транзакцыя занадта вялікая</translation>
</message>
</context>
</TS>

View File

@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished">Клик с десен бутон на мишката за промяна на адрес или етикет</translation>
<translation type="unfinished">Десен клик за промяна на адреса или етикета</translation>
</message>
<message>
<source>Create a new address</source>
@ -18,6 +18,10 @@
<translation type="unfinished">Копирай текущо избрания адрес към клипборда</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;Копирай</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation type="unfinished">Затвори</translation>
</message>
@ -27,7 +31,7 @@
</message>
<message>
<source>Enter address or label to search</source>
<translation type="unfinished">Търсене по адрес или име</translation>
<translation type="unfinished">Търсене по адрес или етикет</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
@ -39,7 +43,7 @@
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;Изтрий</translation>
<translation type="unfinished">Изтрий</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
@ -55,20 +59,20 @@
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished">Адрес за пращане</translation>
<translation type="unfinished">Адреси за изпращане</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation type="unfinished">Адрес за получаване</translation>
<translation type="unfinished">Адреси за получаване</translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation type="unfinished">Тези са вашите Биткойн адреси за изпращане на монети. Винаги проверявайте количеството и получаващия адрес преди изпращане. </translation>
<translation type="unfinished">Тези са вашите Биткойн адреси за изпращане на плащания. Винаги проверявайте количеството и получаващите адреси преди изпращане на монети. </translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">създавам</translation>
<translation type="unfinished">Това са вашите биткойн адреси за получаване на плащания. Използвайте бутона Създаване на нови адреси в раздела за получаване, за да създадете нови адреси. Подписването е възможно само с адреси от типа наследени.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
@ -223,6 +227,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Паролата на портфейла беше променена успешно.</translation>
</message>
<message>
<source>Passphrase change failed</source>
<translation type="unfinished">Неуспешна промяна на фраза за достъп</translation>
</message>
<message>
<source>Warning: The Caps Lock key is on!</source>
<translation type="unfinished">Внимание:Бутонът Caps Lock е включен.</translation>
</message>
@ -274,14 +282,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Възникна фатална грешка. Проверете че файла с настройки е редактируем или опирайте да стартирате без настройки.</translation>
</message>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Грешка:Избраната "%1" директория не съществува.</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">Грешка: Не може да се анализира конфигурационния файл: %1.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Грешка: %1</translation>
</message>
@ -399,97 +399,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Файла с настройки не може да бъде прочетен.</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Файла с настройки не може да бъде записан.</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished">Конфигурирай настройки за %s само когато са приложени на %s мрежа, когато са в [%s] секция.</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Желаете ли да пресъздадете базата данни с блокове сега?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Зареждането е завършено</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Грешка в пускането на базата данни с блокове</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Провалено "слушане" на всеки порт. Използвайте -listen=0 ако искате това.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Недостатъчно средства</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Портфейлът няма да плаша по-малко от миналата такса за препредаване.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Това е експериментален софтуер.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Това е минималната такса за транзакция, която плащате за всяка транзакция.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Това е таксата за транзакцията която ще платите ако изпратите транзакция.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Сумата на транзакцията е твърде малка</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Сумите на транзакциите не могат да бъдат отрицателни</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Транзакцията трябва да има поне един получател.</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Транзакцията е твърде голяма</translation>
</message>
<message>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished">Активирани са неизвестни нови правила (versionbit %i)</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Неподдържана logging категория%s=%s.</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation type="unfinished">Коментар потребителски агент (%s) съдържа не безопасни знаци. </translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Секторите се проверяват...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Потвърждаване на портфейл(и)...</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Портфейлът трябва да бъде презаписан : рестартирай %s , за да завърши</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -570,19 +479,19 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>&amp;Send</source>
<translation type="unfinished">&amp;изпращам</translation>
<translation type="unfinished">Изпрати</translation>
</message>
<message>
<source>&amp;Receive</source>
<translation type="unfinished">&amp;получавам</translation>
<translation type="unfinished">Получи</translation>
</message>
<message>
<source>&amp;Options</source>
<translation type="unfinished">&amp;Опции</translation>
<translation type="unfinished">Опций</translation>
</message>
<message>
<source>&amp;Encrypt Wallet</source>
<translation type="unfinished">&amp;Крипритай уолет..</translation>
<translation type="unfinished">Шифровай портфейла</translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
@ -662,11 +571,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>Processing blocks on disk</source>
<translation type="unfinished">Обработват се блокове на диска...</translation>
</message>
<message>
<source>Reindexing blocks on disk</source>
<translation type="unfinished">Преиндексиране на блоково от диска...</translation>
<translation type="unfinished">Обработване на сектори от диска...</translation>
</message>
<message>
<source>Connecting to peers</source>
@ -737,7 +642,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>Load PSBT from &amp;clipboard</source>
<translation type="unfinished">Заредете PSBT (частично подписана Bitcoin трансакция) от &amp;клипборд...</translation>
<translation type="unfinished">Заредете PSBT от &amp;клипборд...</translation>
</message>
<message>
<source>Load Partially Signed Bitcoin Transaction from clipboard</source>
@ -1199,11 +1104,21 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Възстановяване на Портфейл</translation>
</message>
<message>
<source>Restoring Wallet &lt;b&gt;%1&lt;/b&gt;</source>
<extracomment>Descriptive text of the restore wallets progress window which indicates to the user that wallets are currently being restored.</extracomment>
<translation type="unfinished">Възстановяване на портфейл &lt;b&gt;%1&lt;/b&gt;</translation>
</message>
<message>
<source>Restore wallet failed</source>
<extracomment>Title of message box which is displayed when the wallet could not be restored.</extracomment>
<translation type="unfinished">Възстановяването на портфейла не бе успешно</translation>
</message>
<message>
<source>Restore wallet warning</source>
<extracomment>Title of message box which is displayed when the wallet is restored with some warning.</extracomment>
<translation type="unfinished">Предупреждение за възстановяване на портфейл</translation>
</message>
<message>
<source>Restore wallet message</source>
<extracomment>Title of message box which is displayed when the wallet is successfully restored.</extracomment>
<translation type="unfinished">Съобщение портфейлът е възстановен</translation>
@ -1391,8 +1306,8 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>%n ГБ свободни</numerusform>
<numerusform>%nГигабайти свободни</numerusform>
</translation>
</message>
<message numerus="yes">
@ -1726,10 +1641,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">&amp;Външен път на скрипта на подписващия</translation>
</message>
<message>
<source>Full path to a Bitcoin Core compatible script (e.g. C:\Downloads\hwi.exe or /Users/you/Downloads/hwi.py). Beware: malware can steal your coins!</source>
<translation type="unfinished">Пълен път към съвместим с биткойн основен скрипт (например C: \ Downloads \ hwi.exe или /users/you/downloads/hwi.py). Внимавайте: злонамерен софтуер може да открадне вашите монети!</translation>
</message>
<message>
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
<translation type="unfinished">Автоматично отваряне на входящия Bitcoin порт. Работи само с рутери поддържащи UPnP.</translation>
</message>
@ -1851,6 +1762,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Опции за конфигуриране</translation>
</message>
<message>
<source>Continue</source>
<translation type="unfinished">Продължи</translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished">Отказ</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">грешка</translation>
</message>
@ -1921,6 +1840,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Sign Tx</source>
<translation type="unfinished">Подпиши Тх</translation>
</message>
<message>
<source>Save</source>
<translation type="unfinished">Запази...</translation>
</message>
@ -1929,6 +1852,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Затвори</translation>
</message>
<message>
<source>Total Amount</source>
<translation type="unfinished">Тотално количество</translation>
</message>
<message>
<source>or</source>
<translation type="unfinished">или</translation>
</message>
@ -1965,6 +1892,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">пинг</translation>
</message>
<message>
<source>Age</source>
<extracomment>Title of Peers Table column which indicates the duration (length of time) since the peer connection started.</extracomment>
<translation type="unfinished">Възраст</translation>
</message>
<message>
<source>Direction</source>
<extracomment>Title of Peers Table column which indicates the direction the peer connection was initiated from.</extracomment>
<translation type="unfinished">Посока</translation>
@ -2167,6 +2099,16 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Изходящи</translation>
</message>
<message>
<source>Ctrl++</source>
<extracomment>Main shortcut to increase the RPC console font size.</extracomment>
<translation type="unfinished">Контрол++</translation>
</message>
<message>
<source>Ctrl+=</source>
<extracomment>Secondary shortcut to increase the RPC console font size.</extracomment>
<translation type="unfinished">Контрол+=</translation>
</message>
<message>
<source>&amp;Copy address</source>
<extracomment>Context menu action to copy the address of a peer.</extracomment>
<translation type="unfinished">&amp;Копирай адрес</translation>
@ -2456,6 +2398,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Такса</translation>
</message>
<message>
<source>Total Amount</source>
<translation type="unfinished">Тотално количество</translation>
</message>
<message>
<source>Confirm send coins</source>
<translation type="unfinished">Потвърждаване</translation>
</message>
@ -3028,5 +2974,100 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>The wallet data was successfully saved to %1.</source>
<translation type="unfinished">Информацията за портфейла беше успешно запазена в %1.</translation>
</message>
</context>
<message>
<source>Cancel</source>
<translation type="unfinished">Отказ</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished">Конфигурирай настройки за %s само когато са приложени на %s мрежа, когато са в [%s] секция.</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Желаете ли да пресъздадете базата данни с блокове сега?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Зареждането е завършено</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Грешка в пускането на базата данни с блокове</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Провалено "слушане" на всеки порт. Използвайте -listen=0 ако искате това.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Недостатъчно средства</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Портфейлът няма да плаша по-малко от миналата такса за препредаване.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Това е експериментален софтуер.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Това е минималната такса за транзакция, която плащате за всяка транзакция.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Това е таксата за транзакцията която ще платите ако изпратите транзакция.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Сумата на транзакцията е твърде малка</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Сумите на транзакциите не могат да бъдат отрицателни</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Транзакцията трябва да има поне един получател.</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Транзакцията е твърде голяма</translation>
</message>
<message>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished">Активирани са неизвестни нови правила (versionbit %i)</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Неподдържана logging категория%s=%s.</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation type="unfinished">Коментар потребителски агент (%s) съдържа не безопасни знаци. </translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Секторите се проверяват...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Потвърждаване на портфейл(и)...</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Портфейлът трябва да бъде презаписан : рестартирай %s , за да завърши</translation>
</message>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Файла с настройки не може да бъде прочетен.</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Файла с настройки не може да бъде записан.</translation>
</message>
</context>
</TS>

View File

@ -3,7 +3,7 @@
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished">ি ি ি </translation>
<translation type="unfinished">ি -ি </translation>
</message>
<message>
<source>Create a new address</source>
@ -19,7 +19,7 @@
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;ি</translation>
<translation type="unfinished"> ি </translation>
</message>
<message>
<source>C&amp;lose</source>
@ -34,6 +34,10 @@
<translation type="unfinished"> ি ি</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished"> ি ি িি  </translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;</translation>
</message>
@ -42,6 +46,18 @@
<translation type="unfinished"> ি </translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation type="unfinished"> ি </translation>
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished">ি </translation>
</message>
<message>
<source>Receiving addresses</source>
<translation type="unfinished">ি </translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished"> ি ি ি ি "নতুন গ্রহণের ঠিকানা তৈরী করুন" "উত্তরাধিকার" ি </translation>
@ -53,6 +69,17 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished">ি</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">ি</translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
@ -80,7 +107,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<message>
<source>Do you want to reset settings to default values, or to abort without making changes?</source>
<extracomment>Explanatory text shown on startup when the settings file cannot be read. Prompts user to make a choice between resetting or aborting.</extracomment>
<translation type="unfinished">ি ি ি ি , ি ি ? </translation>
<translation type="unfinished">ি ি ি ি ি ি , ি ি ি ?</translation>
</message>
<message>
<source>A fatal error occurred. Check that settings file is writable, or try running with -nosettings.</source>
@ -145,37 +172,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation type="unfinished">. ি. : অপ্রত্যি ি .ি. ি %u, %u </translation>
</message>
<message>
<source>Starting network threads</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>The specified config file %s does not exist</source>
<translation type="unfinished">িি ি %s ি </translation>
</message>
<message>
<source>Unable to open %s for writing</source>
<translation type="unfinished"> %s </translation>
</message>
<message>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished"> ি ি (ি %i)</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">() ...</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Create a new wallet</source>
@ -222,10 +218,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">ি ...</translation>
</message>
<message>
<source>Reindexing blocks on disk</source>
<translation type="unfinished">ি ি ...</translation>
</message>
<message>
<source>Connecting to peers</source>
<translation type="unfinished"> ...</translation>
</message>
@ -416,6 +408,11 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>PeerTableModel</name>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished">ি</translation>
</message>
<message>
<source>Type</source>
<extracomment>Title of Peers Table column which describes the type of peer connection. The "type" describes why the connection exists.</extracomment>
<translation type="unfinished"></translation>
@ -476,9 +473,25 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Date</source>
<translation type="unfinished">ি</translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">ি</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>Quantity:</source>
<translation type="unfinished">ি</translation>
</message>
<message>
<source>Fee:</source>
<translation type="unfinished">িি</translation>
</message>
<message>
<source>Change:</source>
<translation type="unfinished">ি</translation>
</message>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
@ -518,6 +531,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">ি</translation>
</message>
</context>
<context>
<name>TransactionView</name>
@ -555,6 +572,14 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">ি</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">ি</translation>
</message>
<message>
<source>ID</source>
<translation type="unfinished">ি</translation>
</message>
@ -582,4 +607,46 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">ি ি </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished"> ি ি িি  </translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation type="unfinished">. ি. : অপ্রত্যি ি .ি. ি %u, %u </translation>
</message>
<message>
<source>Starting network threads</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>The specified config file %s does not exist</source>
<translation type="unfinished">িি ি %s ি </translation>
</message>
<message>
<source>Unable to open %s for writing</source>
<translation type="unfinished"> %s </translation>
</message>
<message>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished"> ি ি (ি %i)</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">() ...</translation>
</message>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Settingsসি fileসি couldসি notসি beসি read</translation>
</message>
</context>
</TS>

179
src/qt/locale/bitcoin_br.ts Normal file
View File

@ -0,0 +1,179 @@
<TS version="2.1" language="br">
<context>
<name>AddressBookPage</name>
<message>
<source>Create a new address</source>
<translation type="unfinished">Krouiñ ur chomlec'h nevez</translation>
</message>
<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;Nevez</translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Internal error</source>
<translation type="unfinished">Fazi diabarzh</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Error: %1</source>
<translation type="unfinished">Fazi : %1</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fazi</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Fazi : %1</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fazi</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Error</source>
<translation type="unfinished">Fazi</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>SignVerifyMessageDialog</name>
<message>
<source>No error</source>
<translation type="unfinished">Fazi ebet</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>Error</source>
<translation type="unfinished">Fazi</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Error creating %s</source>
<translation type="unfinished">Fazi en ur grouiñ %s</translation>
</message>
</context>
</TS>

View File

@ -241,6 +241,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>BitcoinApplication</name>
<message>
<source>Settings file %1 might be corrupt or invalid.</source>
<translation type="unfinished">Datoteka postavki %1 je možda oštećena ili nevažeća.</translation>
</message>
<message>
<source>Runaway exception</source>
<translation type="unfinished">Odbegli izuzetak</translation>
</message>
@ -270,14 +274,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Došlo je do fatalne greške. Provjerite da li se u datoteku postavki može pisati ili pokušajte pokrenuti s -nosettings.</translation>
</message>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Greška: Navedeni direktorij podataka "%1" ne postoji.</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">Greška: Nije moguće parsirati konfiguracijsku datoteku: %1.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Greška: %1</translation>
</message>
@ -343,185 +339,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Nije moguće pročitati fajl postavki</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Nije moguće upisati datoteku postavki</translation>
</message>
<message>
<source>Replaying blocks</source>
<translation type="unfinished">Reprodukcija blokova</translation>
</message>
<message>
<source>Rescanning</source>
<translation type="unfinished">Ponovno skeniranje</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Izvršenje naredbe za provjeru baze podataka nije uspjelo: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Nije uspjela priprema naredbe za provjeru baze podataka: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation type="unfinished">SQLiteDatabase: Neuspjelo čitanje greške verifikacije baze podataka: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation type="unfinished">SQLiteDatabase: Neočekivani ID aplikacije. Ocekivao %u, dobio %u</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation type="unfinished">Odjeljak [%s] nije prepoznat.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Potpisivanje transakcije nije uspjelo</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation type="unfinished">Navedeni -walletdir "%s" ne postoji</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation type="unfinished">Navedeni -walletdir "%s" je relativna putanja</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation type="unfinished">Navedeni -walletdir "%s" nije direktorij</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation type="unfinished">Navedeni direktorij blokova "%s" ne postoji.</translation>
</message>
<message>
<source>Starting network threads</source>
<translation type="unfinished">Pokretanje mrežnih niti</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Izvorni kod je dostupan od %s.</translation>
</message>
<message>
<source>The specified config file %s does not exist</source>
<translation type="unfinished">Navedena konfiguracijska datoteka %s ne postoji</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished">Iznos transakcije je premali za plaćanje naknade</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Novčanik će izbjeći plaćanje manje od minimalne relejne naknade.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Ovo je eksperimentalni softver.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Ovo je minimalna naknada za transakciju koju plaćate za svaku transakciju.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Ovo je naknada za transakciju koju ćete platiti ako pošaljete transakciju.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Iznos transakcije je premali</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Iznosi transakcija ne smiju biti negativni</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation type="unfinished">Transakcija ima predugačak mempool lanac </translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Transakcija mora imati najmanje jednog primaoca</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakcija je prevelika</translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished">Nije moguće povezati se na %s na ovom računaru (povezivanje je vratilo grešku %s)</translation>
</message>
<message>
<source>Unable to bind to %s on this computer. %s is probably already running.</source>
<translation type="unfinished">Nije moguće povezati se na %s na ovom računaru. %s vjerovatno već radi.</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">Nije moguće kreirati PID fajl '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">Nije moguće generirati početne ključeve</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished">Nije moguće generirati ključeve</translation>
</message>
<message>
<source>Unable to open %s for writing</source>
<translation type="unfinished">Nije moguće otvoriti %s za pisanje</translation>
</message>
<message>
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished">Nije moguće pokrenuti HTTP server. Pogledajte dnevnik otklanjanja grešaka za detalje.</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">Nepoznata vrijednost -blockfilterindex %s.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation type="unfinished">Nepoznata vrsta adrese '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation type="unfinished">Nepoznata vrsta promjene '%s'</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Nepoznata mreža navedena u -onlynet: '%s'</translation>
</message>
<message>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished">Nepoznata nova pravila aktivirana (versionbit %i)</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Nepodržana kategorija logivanja %s=%s.</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation type="unfinished">Komentar korisničkog agenta (%s) sadrži nesigurne znakove.</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Provjera blokova</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Provjera novčanika</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Novčanik je trebao biti prepisan: ponovo pokrenite %s da biste završili</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -661,6 +478,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Alatna traka kartica</translation>
</message>
<message>
<source>Syncing Headers (%1%)</source>
<translation type="unfinished">Sinhroniziranje zaglavlja (%1%)</translation>
</message>
<message>
<source>Synchronizing with network</source>
<translation type="unfinished">Sinhronizacija sa mrežom...</translation>
</message>
@ -673,8 +494,8 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Procesuiraju se blokovi na disku...</translation>
</message>
<message>
<source>Reindexing blocks on disk</source>
<translation type="unfinished">Reindekiraju se blokovi na disku...</translation>
<source>Connecting to peers</source>
<translation type="unfinished">Povezivanje sa kolegama</translation>
</message>
<message>
<source>Request payments (generates QR codes and bitcoin: URIs)</source>
@ -1023,6 +844,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Ova naljepnica postaje crvena ako bilo koji primatelj primi količinu manju od trenutnog praga prašine.</translation>
</message>
<message>
<source>Can vary +/- %1 satoshi(s) per input.</source>
<translation type="unfinished">Može varirati +/- %1 satoshi (a) po upisu vrijednosti.</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(nema oznake)</translation>
</message>
@ -1755,4 +1580,183 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Izvezite podatke trenutne kartice u datoteku</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Replaying blocks</source>
<translation type="unfinished">Reprodukcija blokova</translation>
</message>
<message>
<source>Rescanning</source>
<translation type="unfinished">Ponovno skeniranje</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Izvršenje naredbe za provjeru baze podataka nije uspjelo: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Nije uspjela priprema naredbe za provjeru baze podataka: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation type="unfinished">SQLiteDatabase: Neuspjelo čitanje greške verifikacije baze podataka: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation type="unfinished">SQLiteDatabase: Neočekivani ID aplikacije. Ocekivao %u, dobio %u</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation type="unfinished">Odjeljak [%s] nije prepoznat.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Potpisivanje transakcije nije uspjelo</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation type="unfinished">Navedeni -walletdir "%s" ne postoji</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation type="unfinished">Navedeni -walletdir "%s" je relativna putanja</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation type="unfinished">Navedeni -walletdir "%s" nije direktorij</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation type="unfinished">Navedeni direktorij blokova "%s" ne postoji.</translation>
</message>
<message>
<source>Starting network threads</source>
<translation type="unfinished">Pokretanje mrežnih niti</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Izvorni kod je dostupan od %s.</translation>
</message>
<message>
<source>The specified config file %s does not exist</source>
<translation type="unfinished">Navedena konfiguracijska datoteka %s ne postoji</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished">Iznos transakcije je premali za plaćanje naknade</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Novčanik će izbjeći plaćanje manje od minimalne relejne naknade.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Ovo je eksperimentalni softver.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Ovo je minimalna naknada za transakciju koju plaćate za svaku transakciju.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Ovo je naknada za transakciju koju ćete platiti ako pošaljete transakciju.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Iznos transakcije je premali</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Iznosi transakcija ne smiju biti negativni</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation type="unfinished">Transakcija ima predugačak mempool lanac </translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Transakcija mora imati najmanje jednog primaoca</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakcija je prevelika</translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished">Nije moguće povezati se na %s na ovom računaru (povezivanje je vratilo grešku %s)</translation>
</message>
<message>
<source>Unable to bind to %s on this computer. %s is probably already running.</source>
<translation type="unfinished">Nije moguće povezati se na %s na ovom računaru. %s vjerovatno već radi.</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">Nije moguće kreirati PID fajl '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">Nije moguće generirati početne ključeve</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished">Nije moguće generirati ključeve</translation>
</message>
<message>
<source>Unable to open %s for writing</source>
<translation type="unfinished">Nije moguće otvoriti %s za pisanje</translation>
</message>
<message>
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished">Nije moguće pokrenuti HTTP server. Pogledajte dnevnik otklanjanja grešaka za detalje.</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">Nepoznata vrijednost -blockfilterindex %s.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation type="unfinished">Nepoznata vrsta adrese '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation type="unfinished">Nepoznata vrsta promjene '%s'</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Nepoznata mreža navedena u -onlynet: '%s'</translation>
</message>
<message>
<source>Unknown new rules activated (versionbit %i)</source>
<translation type="unfinished">Nepoznata nova pravila aktivirana (versionbit %i)</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Nepodržana kategorija logivanja %s=%s.</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation type="unfinished">Komentar korisničkog agenta (%s) sadrži nesigurne znakove.</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Provjera blokova</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Provjera novčanika</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Novčanik je trebao biti prepisan: ponovo pokrenite %s da biste završili</translation>
</message>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Nije moguće pročitati fajl postavki</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Nije moguće upisati datoteku postavki</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

3697
src/qt/locale/bitcoin_cmn.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -244,10 +244,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>QObject</name>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Eraro: la elektita dosierujo por datumoj "%1" ne ekzistas.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Eraro: %1</translation>
</message>
@ -315,81 +311,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Tiu ĉi estas antaŭeldona testa versio - uzu laŭ via propra risko - ne uzu por minado aŭ por aplikaĵoj por vendistoj</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation type="unfinished">Averto: ŝajne ni ne tute konsentas kun niaj samtavolanoj! Eble vi devas ĝisdatigi vian klienton, eble aliaj nodoj faru same.</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Difektita blokdatumbazo trovita</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ĉu vi volas rekonstrui la blokdatumbazon nun?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Ŝargado finiĝis</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Eraro dum pravalorizado de blokdatumbazo</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Eraro dum pravalorizado de monuj-datumbaza ĉirkaŭaĵo %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Eraro dum ŝargado de blokdatumbazo</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Eraro dum malfermado de blokdatumbazo</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Ne sukcesis aŭskulti ajnan pordon. Uzu -listen=0 se tion vi volas.</translation>
</message>
<message>
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation type="unfinished">Geneza bloko aŭ netrovita aŭ neĝusta. Ĉu eble la datadir de la reto malĝustas?</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Nesufiĉa mono</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Nesufiĉa nombro de dosierpriskribiloj disponeblas.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Subskriba transakcio fiaskis</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">ĝi estas eksperimenta programo</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Transakcia sumo tro malgranda</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakcio estas tro granda</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Nekonata reto specifita en -onlynet: '%s'</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -2200,4 +2121,79 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Sukcesis krei sekurkopion</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Tiu ĉi estas antaŭeldona testa versio - uzu laŭ via propra risko - ne uzu por minado aŭ por aplikaĵoj por vendistoj</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation type="unfinished">Averto: ŝajne ni ne tute konsentas kun niaj samtavolanoj! Eble vi devas ĝisdatigi vian klienton, eble aliaj nodoj faru same.</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Difektita blokdatumbazo trovita</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ĉu vi volas rekonstrui la blokdatumbazon nun?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Ŝargado finiĝis</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Eraro dum pravalorizado de blokdatumbazo</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Eraro dum pravalorizado de monuj-datumbaza ĉirkaŭaĵo %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Eraro dum ŝargado de blokdatumbazo</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Eraro dum malfermado de blokdatumbazo</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Ne sukcesis aŭskulti ajnan pordon. Uzu -listen=0 se tion vi volas.</translation>
</message>
<message>
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation type="unfinished">Geneza bloko aŭ netrovita aŭ neĝusta. Ĉu eble la datadir de la reto malĝustas?</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Nesufiĉa mono</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Nesufiĉa nombro de dosierpriskribiloj disponeblas.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Subskriba transakcio fiaskis</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">ĝi estas eksperimenta programo</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Transakcia sumo tro malgranda</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakcio estas tro granda</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Nekonata reto specifita en -onlynet: '%s'</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -321,69 +321,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">See on test-versioon - kasutamine omal riisikol - ära kasuta mining'uks ega kaupmeeste programmides</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Tuvastati vigane bloki andmebaas</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Kas soovid bloki andmebaasi taastada?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Laetud</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Tõrge bloki andmebaasi käivitamisel</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Tõrge rahakoti keskkonna %s käivitamisel!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Tõrge bloki baasi lugemisel</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Tõrge bloki andmebaasi avamisel</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Pordi kuulamine nurjus. Soovikorral kasuta -listen=0.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Liiga suur summa</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Tehingu allkirjastamine ebaõnnestus</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished">Tehingu summa on tasu maksmiseks liiga väikene</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Tehingu summa liiga väikene</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Tehing liiga suur</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Kirjeldatud tundmatu võrgustik -onlynet'is: '%s'</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -1014,10 +951,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished">Dialoog</translation>
</message>
<message>
<source>or</source>
<translation type="unfinished">või</translation>
</message>
@ -1922,4 +1855,67 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Varundamine õnnestus</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">See on test-versioon - kasutamine omal riisikol - ära kasuta mining'uks ega kaupmeeste programmides</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Tuvastati vigane bloki andmebaas</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Kas soovid bloki andmebaasi taastada?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Laetud</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Tõrge bloki andmebaasi käivitamisel</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Tõrge rahakoti keskkonna %s käivitamisel!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Tõrge bloki baasi lugemisel</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Tõrge bloki andmebaasi avamisel</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Pordi kuulamine nurjus. Soovikorral kasuta -listen=0.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Liiga suur summa</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Tehingu allkirjastamine ebaõnnestus</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished">Tehingu summa on tasu maksmiseks liiga väikene</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Tehingu summa liiga väikene</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Tehing liiga suur</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Kirjeldatud tundmatu võrgustik -onlynet'is: '%s'</translation>
</message>
</context>
</TS>

View File

@ -269,10 +269,6 @@ Sinatzea 'legacy' motako helbideekin soilik da posible</translation>
<translation type="unfinished">Kopurua</translation>
</message>
<message>
<source>Internal</source>
<translation type="unfinished">Barnekoa</translation>
</message>
<message>
<source>%1 d</source>
<translation type="unfinished">%1 e</translation>
</message>
@ -324,77 +320,6 @@ Sinatzea 'legacy' motako helbideekin soilik da posible</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Done loading</source>
<translation type="unfinished">Zamaketa amaitua</translation>
</message>
<message>
<source>Importing</source>
<translation type="unfinished">Inportatzen...</translation>
</message>
<message>
<source>Loading wallet</source>
<translation type="unfinished">Diruzorroa kargatzen...</translation>
</message>
<message>
<source>Missing amount</source>
<translation type="unfinished">Zenbatekoa falta da</translation>
</message>
<message>
<source>No addresses available</source>
<translation type="unfinished">Ez dago helbiderik eskuragarri</translation>
</message>
<message>
<source>Replaying blocks</source>
<translation type="unfinished">Blokeak errepikatzen...</translation>
</message>
<message>
<source>Rescanning</source>
<translation type="unfinished">Bereskaneatzen...</translation>
</message>
<message>
<source>Starting network threads</source>
<translation type="unfinished">Sareko hariak abiarazten...</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Iturri kodea %s-tik dago eskuragarri.</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished">Transakzio kantitatea txikiegia da kuota ordaintzeko.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Hau software esperimentala da</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">transakzio kopurua txikiegia</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakzio luzeegia</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">hasierako giltzak sortzeko ezgai</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished">Giltzak sortzeko ezgai</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Blokeak egiaztatzen...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Diruzorroak egiaztatzen...</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -566,10 +491,6 @@ Sinatzea 'legacy' motako helbideekin soilik da posible</translation>
<translation type="unfinished">Diskoko blokeak prozesatzen...</translation>
</message>
<message>
<source>Reindexing blocks on disk</source>
<translation type="unfinished">Diskoko blokeak berzerrendatzen</translation>
</message>
<message>
<source>Connecting to peers</source>
<translation type="unfinished">Pareekin konektatzen...</translation>
</message>
@ -1386,10 +1307,6 @@ Sinatzea 'legacy' motako helbideekin soilik da posible</translation>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished">Elkarrizketa</translation>
</message>
<message>
<source>Sign Tx</source>
<translation type="unfinished">Sinatu Tx</translation>
</message>
@ -1871,6 +1788,7 @@ Sinatzea 'legacy' motako helbideekin soilik da posible</translation>
</message>
<message>
<source>PSBT saved</source>
<extracomment>Popup message when a PSBT has been saved to a file</extracomment>
<translation type="unfinished">PSBT gordeta</translation>
</message>
<message>
@ -2295,4 +2213,75 @@ Sinatzea 'legacy' motako helbideekin soilik da posible</translation>
<translation type="unfinished">Uneko fitxategian datuak esportatu</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Done loading</source>
<translation type="unfinished">Zamaketa amaitua</translation>
</message>
<message>
<source>Importing</source>
<translation type="unfinished">Inportatzen...</translation>
</message>
<message>
<source>Loading wallet</source>
<translation type="unfinished">Diruzorroa kargatzen...</translation>
</message>
<message>
<source>Missing amount</source>
<translation type="unfinished">Zenbatekoa falta da</translation>
</message>
<message>
<source>No addresses available</source>
<translation type="unfinished">Ez dago helbiderik eskuragarri</translation>
</message>
<message>
<source>Replaying blocks</source>
<translation type="unfinished">Blokeak errepikatzen...</translation>
</message>
<message>
<source>Rescanning</source>
<translation type="unfinished">Bereskaneatzen...</translation>
</message>
<message>
<source>Starting network threads</source>
<translation type="unfinished">Sareko hariak abiarazten...</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Iturri kodea %s-tik dago eskuragarri.</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished">Transakzio kantitatea txikiegia da kuota ordaintzeko.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Hau software esperimentala da</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">transakzio kopurua txikiegia</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakzio luzeegia</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">hasierako giltzak sortzeko ezgai</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished">Giltzak sortzeko ezgai</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Blokeak egiaztatzen...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Diruzorroak egiaztatzen...</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -248,14 +248,6 @@ Ní féidir síniú ach le seoltaí 'oidhreachta'.</translation>
<context>
<name>QObject</name>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Earráid: Níl eolaire sonraí sainithe "%1" ann.</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">Earráid: féidir parsáil comhad cumraíochta: %1.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Earráid: %1</translation>
</message>
@ -355,433 +347,6 @@ Ní féidir síniú ach le seoltaí 'oidhreachta'.</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>The %s developers</source>
<translation type="unfinished">Forbróirí %s</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation type="unfinished"> %s truaillithe. Triail an uirlis sparán bitcoin-wallet a úsáid chun tharrtháil chun cúltaca a athbhunú.</translation>
</message>
<message>
<source>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
<translation type="unfinished"> -maxtxfee socraithe an-ard! Dfhéadfaí íoc ar tháillí chomh ard seo in idirbheart amháin.</translation>
</message>
<message>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation type="unfinished"> féidir glas a fháil ar eolaire sonraí %s. Is dócha go bhfuil %s ag rith cheana.</translation>
</message>
<message>
<source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
<translation type="unfinished">Dáilte faoin gceadúnas bogearraí MIT, féach na comhad atá in éindí %s %s</translation>
</message>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation type="unfinished">Earráid ag léamh %s! Léigh gach eochair i gceart, ach dfhéadfadh sonraí idirbhirt iontrálacha leabhar seoltaí a bheidh in easnamh mícheart.</translation>
</message>
<message>
<source>Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.</source>
<translation type="unfinished">Theip ar mheastachán táillí. fallbackfee díchumasaithe. Fan cúpla bloc cumasaigh -fallbackfee.</translation>
</message>
<message>
<source>Invalid amount for -maxtxfee=&lt;amount&gt;: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
<translation type="unfinished">Suim neamhbhailí do -maxtxfee =&lt;amount&gt;: '%s' (caithfidh ar a laghad an táille minrelay de %s chun idirbhearta greamaithe a chosc)</translation>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation type="unfinished"> níos seoladh ceangail oinniún amháin curtha ar fáil. Ag baint úsáide as %s don tseirbhís Tor oinniún a cruthaíodh go huathoibríoch.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation type="unfinished">Le do thoil seiceáil go bhfuil dáta agus am do ríomhaire ceart! do chlog mícheart, oibreoidh %s i gceart.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation type="unfinished">Tabhair le do thoil fhaigheann %s úsáideach. Tabhair cuairt ar %s chun tuilleadh faisnéise a fháil faoin bogearraí.</translation>
</message>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation type="unfinished">Bearradh cumraithe faoi bhun an íosmhéid %d MiB. Úsáid uimhir níos airde le do thoil.</translation>
</message>
<message>
<source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
<translation type="unfinished">Bearradh: téann sioncrónú deireanach an sparán thar sonraí bearrtha. mór duit -reindex (déan an blockchain iomlán a íoslódáil arís i gcás nód bearrtha)</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation type="unfinished">SQLiteDatabase: Leagan scéime sparán sqlite anaithnid %d. thacaítear ach le leagan %d</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation type="unfinished"> bloc sa bhunachar sonraí ar cosúil gur as na todhchaí é. B'fhéidir go bhfuil dháta agus am do ríomhaire socraithe go mícheart. déan an bunachar sonraí bloic a atógáil ach cinnte go bhfuil dáta agus am do ríomhaire ceart</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation type="unfinished"> méid an idirbhirt -bheag le seoladh agus an táille asbhainte</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation type="unfinished">Dfhéadfadh an earráid seo tarlú mura múchadh an sparán seo go glan agus go ndéanfaí é a lódáil go deireanach ag úsáid tiomsú le leagan níos nuaí de Berkeley DB. Más ea, bain úsáid as na bogearraí a rinne an sparán seo a lódáil go deireanach.</translation>
</message>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Tógáil tástála réamheisiúint é seo - úsáid ar do riosca fhéin - húsáid le haghaidh iarratas mianadóireachta ceannaí</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation type="unfinished">Is é seo an uasmhéid táille idirbhirt a íocann (i dteannta leis an ngnáth-tháille) chun tosaíocht a thabhairt do sheachaint páirteach caiteachais thar gnáth roghnú bonn.</translation>
</message>
<message>
<source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
<translation type="unfinished">Is é seo an táille idirbhirt a fhéadfaidh cuileáil sóinseáil níos dusta ag an leibhéal seo</translation>
</message>
<message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation type="unfinished">Seo an táille idirbhirt a fhéadfaidh íoc nuair nach bhfuil meastacháin táillí ar fáil.</translation>
</message>
<message>
<source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
<translation type="unfinished">Sáraíonn fad iomlán na sreinge leagan líonra (%i) an fad uasta (%i). Laghdaigh líon méid na uacomments.</translation>
</message>
<message>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
<translation type="unfinished"> féidir bloic a aithrise. Beidh ort an bunachar sonraí a atógáil ag úsáid -reindex-chainstate.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation type="unfinished">Rabhadh: Eochracha príobháideacha braite i sparán {%s} le heochracha príobháideacha díchumasaithe</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation type="unfinished">Rabhadh: Is cosúil nach n-aontaímid go hiomlán lenár piaraí! Bfhéidir go mbeidh ort uasghrádú a dhéanamh, bfhéidir go mbeidh ar nóid eile uasghrádú.</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation type="unfinished"> mór duit an bunachar sonraí a atógáil ag baint úsáide as -reindex chun dul ar ais go mód neamhbhearrtha. Déanfaidh seo an blockchain iomlán a athlódáil</translation>
</message>
<message>
<source>%s is set very high!</source>
<translation type="unfinished"> %s socraithe an-ard!</translation>
</message>
<message>
<source>-maxmempool must be at least %d MB</source>
<translation type="unfinished">Caithfidh -maxmempool a bheith ar a laghad %d MB</translation>
</message>
<message>
<source>A fatal internal error occurred, see debug.log for details</source>
<translation type="unfinished">Tharla earráid mharfach inmheánach, féach debug.log le haghaidh sonraí</translation>
</message>
<message>
<source>Cannot resolve -%s address: '%s'</source>
<translation type="unfinished"> féidir réiteach seoladh -%s: '%s'</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation type="unfinished"> féidir -peerblockfilters a shocrú gan -blockfilterindex.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation type="unfinished"> féidir scríobh chuig eolaire sonraí '%s'; seiceáil ceadanna.</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished"> chuirtear socrú cumraíochta do %s i bhfeidhm ach ar líonra %s nuair atá sa rannán [%s].</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">Cóipcheart (C) %i-%i</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Braitheadh bunachar sonraí bloic truaillithe</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation type="unfinished">Níorbh fhéidir comhad asmap %s a fháil</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation type="unfinished">Níorbh fhéidir comhad asmap %s a pharsáil</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation type="unfinished"> spás ar diosca -íseal!</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ar mhaith leat an bunachar sonraí bloic a atógáil anois?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Lódáil déanta</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Earráid ag túsú bunachar sonraí bloic</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Earráid ag túsú timpeallacht bunachar sonraí sparán %s!</translation>
</message>
<message>
<source>Error loading %s</source>
<translation type="unfinished">Earráid lódáil %s</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation type="unfinished">Earráid lódáil %s: féidir eochracha príobháideacha a dhíchumasú ach le linn cruthaithe</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation type="unfinished">Earráid lódáil %s: Sparán truaillithe</translation>
</message>
<message>
<source>Error loading %s: Wallet requires newer version of %s</source>
<translation type="unfinished">Earráid lódáil %s: Éilíonn sparán leagan níos nuaí de %s</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Earráid ag lódáil bunachar sonraí bloic</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Earráid ag oscailt bunachar sonraí bloic</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation type="unfinished">Earráid ag léamh ón mbunachar sonraí, ag múchadh.</translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation type="unfinished">Earráid: spás ar diosca íseal do %s</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation type="unfinished">Earráid: Rith keypool amach, glaoigh ar keypoolrefill ar dtús</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Theip ar éisteacht ar aon phort. Úsáid -listen=0 más é seo atá uait.</translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation type="unfinished">Theip athscanadh ar an sparán le linn túsúchán</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation type="unfinished">Theip ar fhíorú an mbunachar sonraí</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation type="unfinished"> an ráta táillí (%s) níos ísle an socrú íosta rátaí táille (%s).</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation type="unfinished">Neamhaird ar sparán dhúbailt %s.</translation>
</message>
<message>
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation type="unfinished">Bloc geineasas mícheart aimsithe. datadir mícheart don líonra?</translation>
</message>
<message>
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation type="unfinished">Theip ar seiceáil slánchiall túsúchán. %s ag múchadh.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Neamhleor ciste</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation type="unfinished">Seoladh neamhbhailí -onion óstainm: '%s'</translation>
</message>
<message>
<source>Invalid -proxy address or hostname: '%s'</source>
<translation type="unfinished">Seoladh seachfhreastalaí ainm óstach neamhbhailí: '%s'</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation type="unfinished">Cead neamhbhailí P2P: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation type="unfinished">Suim neamhbhailí do -%s=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>Invalid amount for -discardfee=&lt;amount&gt;: '%s'</source>
<translation type="unfinished">Suim neamhbhailí do -discardfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation type="unfinished">Suim neamhbhailí do -fallbackfee=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</source>
<translation type="unfinished">Suim neamhbhailí do -paytxfee =&lt;amount&gt;: '%s' (caithfidh a bheith %s ar a laghad)</translation>
</message>
<message>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation type="unfinished">Mascghréas neamhbhailí sonraithe sa geal-liosta: '%s'</translation>
</message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation type="unfinished">Is port a shainiú le -whitebind: '%s'</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Níl dóthain tuairisceoirí comhaid ar fáil.</translation>
</message>
<message>
<source>Prune cannot be configured with a negative value.</source>
<translation type="unfinished"> féidir Bearradh a bheidh cumraithe le luach diúltach.</translation>
</message>
<message>
<source>Prune mode is incompatible with -txindex.</source>
<translation type="unfinished"> an mód bearrtha neamh-chomhoiriúnach le -txindex.</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation type="unfinished">Laghdú -maxconnections ó %d go %d, mar gheall ar shrianadh an chórais.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Theip ar rith ráiteas chun an bunachar sonraí a fhíorú: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Theip ar ullmhú ráiteas chun bunachar sonraí: %s a fhíorú</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation type="unfinished">SQLiteDatabase: Theip ar léamh earráid fíorú bunachar sonraí: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation type="unfinished">SQLiteDatabase: Aitheantas feidhmchlár nach raibh súil leis. Ag súil le %u, fuair %u</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation type="unfinished"> aithnítear rannán [%s].</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Theip ar síniú idirbheart</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation type="unfinished">Níl -walletdir "%s" sonraithe ann</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation type="unfinished">Is cosán spleách é -walletdir "%s" sonraithe</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation type="unfinished"> eolaire é -walletdir "%s" sonraithe</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation type="unfinished">Níl eolaire bloic shonraithe "%s" ann.</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished"> an cód foinseach ar fáil ó %s.</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished"> suim an idirbhirt -bheag chun an táille a íoc</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Seachnóidh an sparán níos an táille athsheachadán íosta a íoc.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Is bogearraí turgnamhacha é seo.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Is é seo an táille idirbhirt íosta a íocann ar gach idirbheart.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Seo an táille idirbhirt a íocfaidh sheolann idirbheart.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Méid an idirbhirt -bheag</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Níor cheart go mbeadh suimeanna idirbhirt diúltach</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation type="unfinished"> slabhra mempool -fhada ag an idirbheart</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Caithfidh ar a laghad faighteoir amháin a bheith ag idirbheart</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Idirbheart -mhór</translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished"> féidir ceangal le %s ar an ríomhaire seo (thug ceangail earráid %s ar ais)</translation>
</message>
<message>
<source>Unable to bind to %s on this computer. %s is probably already running.</source>
<translation type="unfinished"> féidir ceangal le %s ar an ríomhaire seo. Is dócha go bhfuil %s ag rith cheana féin.</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">Níorbh fhéidir cruthú comhad PID '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished"> féidir eochracha tosaigh a ghiniúint</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished"> féidir eochracha a ghiniúint</translation>
</message>
<message>
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished"> féidir freastalaí HTTP a thosú. Féach loga dífhabhtúcháin le tuilleadh sonraí.</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">Luach -blockfilterindex %s anaithnid.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation type="unfinished">Anaithnid cineál seoladh '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation type="unfinished">Anaithnid cineál sóinseáil '%s'</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Líonra anaithnid sonraithe san -onlynet: '%s'</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Catagóir logáil gan tacaíocht %s=%s.</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation type="unfinished"> carachtair neamhshábháilte i nóta tráchta (%s) Gníomhaire Úsáideora.</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Ba ghá an sparán a athscríobh: atosaigh %s chun críochnú</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -1929,10 +1494,6 @@ Ní féidir síniú ach le seoltaí 'oidhreachta'.</translation>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished">Dialóg</translation>
</message>
<message>
<source>Sign Tx</source>
<translation type="unfinished">Sínigh Tx</translation>
</message>
@ -2767,6 +2328,7 @@ Ní féidir síniú ach le seoltaí 'oidhreachta'.</translation>
</message>
<message>
<source>PSBT saved</source>
<extracomment>Popup message when a PSBT has been saved to a file</extracomment>
<translation type="unfinished">IBSP sábháilte</translation>
</message>
<message>
@ -3584,4 +3146,407 @@ Téigh go Comhad &gt; Oscail Sparán chun sparán a lódáil.
<translation type="unfinished">Cealaigh</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>The %s developers</source>
<translation type="unfinished">Forbróirí %s</translation>
</message>
<message>
<source>%s corrupt. Try using the wallet tool bitcoin-wallet to salvage or restoring a backup.</source>
<translation type="unfinished"> %s truaillithe. Triail an uirlis sparán bitcoin-wallet a úsáid chun tharrtháil chun cúltaca a athbhunú.</translation>
</message>
<message>
<source>Cannot obtain a lock on data directory %s. %s is probably already running.</source>
<translation type="unfinished"> féidir glas a fháil ar eolaire sonraí %s. Is dócha go bhfuil %s ag rith cheana.</translation>
</message>
<message>
<source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
<translation type="unfinished">Dáilte faoin gceadúnas bogearraí MIT, féach na comhad atá in éindí %s %s</translation>
</message>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation type="unfinished">Earráid ag léamh %s! Léigh gach eochair i gceart, ach dfhéadfadh sonraí idirbhirt iontrálacha leabhar seoltaí a bheidh in easnamh mícheart.</translation>
</message>
<message>
<source>More than one onion bind address is provided. Using %s for the automatically created Tor onion service.</source>
<translation type="unfinished"> níos seoladh ceangail oinniún amháin curtha ar fáil. Ag baint úsáide as %s don tseirbhís Tor oinniún a cruthaíodh go huathoibríoch.</translation>
</message>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation type="unfinished">Le do thoil seiceáil go bhfuil dáta agus am do ríomhaire ceart! do chlog mícheart, oibreoidh %s i gceart.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation type="unfinished">Tabhair le do thoil fhaigheann %s úsáideach. Tabhair cuairt ar %s chun tuilleadh faisnéise a fháil faoin bogearraí.</translation>
</message>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation type="unfinished">Bearradh cumraithe faoi bhun an íosmhéid %d MiB. Úsáid uimhir níos airde le do thoil.</translation>
</message>
<message>
<source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
<translation type="unfinished">Bearradh: téann sioncrónú deireanach an sparán thar sonraí bearrtha. mór duit -reindex (déan an blockchain iomlán a íoslódáil arís i gcás nód bearrtha)</translation>
</message>
<message>
<source>SQLiteDatabase: Unknown sqlite wallet schema version %d. Only version %d is supported</source>
<translation type="unfinished">SQLiteDatabase: Leagan scéime sparán sqlite anaithnid %d. thacaítear ach le leagan %d</translation>
</message>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation type="unfinished"> bloc sa bhunachar sonraí ar cosúil gur as na todhchaí é. B'fhéidir go bhfuil dháta agus am do ríomhaire socraithe go mícheart. déan an bunachar sonraí bloic a atógáil ach cinnte go bhfuil dáta agus am do ríomhaire ceart</translation>
</message>
<message>
<source>The transaction amount is too small to send after the fee has been deducted</source>
<translation type="unfinished"> méid an idirbhirt -bheag le seoladh agus an táille asbhainte</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation type="unfinished">Dfhéadfadh an earráid seo tarlú mura múchadh an sparán seo go glan agus go ndéanfaí é a lódáil go deireanach ag úsáid tiomsú le leagan níos nuaí de Berkeley DB. Más ea, bain úsáid as na bogearraí a rinne an sparán seo a lódáil go deireanach.</translation>
</message>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Tógáil tástála réamheisiúint é seo - úsáid ar do riosca fhéin - húsáid le haghaidh iarratas mianadóireachta ceannaí</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation type="unfinished">Is é seo an uasmhéid táille idirbhirt a íocann (i dteannta leis an ngnáth-tháille) chun tosaíocht a thabhairt do sheachaint páirteach caiteachais thar gnáth roghnú bonn.</translation>
</message>
<message>
<source>This is the transaction fee you may discard if change is smaller than dust at this level</source>
<translation type="unfinished">Is é seo an táille idirbhirt a fhéadfaidh cuileáil sóinseáil níos dusta ag an leibhéal seo</translation>
</message>
<message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation type="unfinished">Seo an táille idirbhirt a fhéadfaidh íoc nuair nach bhfuil meastacháin táillí ar fáil.</translation>
</message>
<message>
<source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
<translation type="unfinished">Sáraíonn fad iomlán na sreinge leagan líonra (%i) an fad uasta (%i). Laghdaigh líon méid na uacomments.</translation>
</message>
<message>
<source>Unable to replay blocks. You will need to rebuild the database using -reindex-chainstate.</source>
<translation type="unfinished"> féidir bloic a aithrise. Beidh ort an bunachar sonraí a atógáil ag úsáid -reindex-chainstate.</translation>
</message>
<message>
<source>Warning: Private keys detected in wallet {%s} with disabled private keys</source>
<translation type="unfinished">Rabhadh: Eochracha príobháideacha braite i sparán {%s} le heochracha príobháideacha díchumasaithe</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation type="unfinished">Rabhadh: Is cosúil nach n-aontaímid go hiomlán lenár piaraí! Bfhéidir go mbeidh ort uasghrádú a dhéanamh, bfhéidir go mbeidh ar nóid eile uasghrádú.</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation type="unfinished"> mór duit an bunachar sonraí a atógáil ag baint úsáide as -reindex chun dul ar ais go mód neamhbhearrtha. Déanfaidh seo an blockchain iomlán a athlódáil</translation>
</message>
<message>
<source>%s is set very high!</source>
<translation type="unfinished"> %s socraithe an-ard!</translation>
</message>
<message>
<source>-maxmempool must be at least %d MB</source>
<translation type="unfinished">Caithfidh -maxmempool a bheith ar a laghad %d MB</translation>
</message>
<message>
<source>A fatal internal error occurred, see debug.log for details</source>
<translation type="unfinished">Tharla earráid mharfach inmheánach, féach debug.log le haghaidh sonraí</translation>
</message>
<message>
<source>Cannot resolve -%s address: '%s'</source>
<translation type="unfinished"> féidir réiteach seoladh -%s: '%s'</translation>
</message>
<message>
<source>Cannot set -peerblockfilters without -blockfilterindex.</source>
<translation type="unfinished"> féidir -peerblockfilters a shocrú gan -blockfilterindex.</translation>
</message>
<message>
<source>Cannot write to data directory '%s'; check permissions.</source>
<translation type="unfinished"> féidir scríobh chuig eolaire sonraí '%s'; seiceáil ceadanna.</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished"> chuirtear socrú cumraíochta do %s i bhfeidhm ach ar líonra %s nuair atá sa rannán [%s].</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">Cóipcheart (C) %i-%i</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Braitheadh bunachar sonraí bloic truaillithe</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation type="unfinished">Níorbh fhéidir comhad asmap %s a fháil</translation>
</message>
<message>
<source>Could not parse asmap file %s</source>
<translation type="unfinished">Níorbh fhéidir comhad asmap %s a pharsáil</translation>
</message>
<message>
<source>Disk space is too low!</source>
<translation type="unfinished"> spás ar diosca -íseal!</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ar mhaith leat an bunachar sonraí bloic a atógáil anois?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Lódáil déanta</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Earráid ag túsú bunachar sonraí bloic</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Earráid ag túsú timpeallacht bunachar sonraí sparán %s!</translation>
</message>
<message>
<source>Error loading %s</source>
<translation type="unfinished">Earráid lódáil %s</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation type="unfinished">Earráid lódáil %s: féidir eochracha príobháideacha a dhíchumasú ach le linn cruthaithe</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation type="unfinished">Earráid lódáil %s: Sparán truaillithe</translation>
</message>
<message>
<source>Error loading %s: Wallet requires newer version of %s</source>
<translation type="unfinished">Earráid lódáil %s: Éilíonn sparán leagan níos nuaí de %s</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Earráid ag lódáil bunachar sonraí bloic</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Earráid ag oscailt bunachar sonraí bloic</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation type="unfinished">Earráid ag léamh ón mbunachar sonraí, ag múchadh.</translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation type="unfinished">Earráid: spás ar diosca íseal do %s</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation type="unfinished">Earráid: Rith keypool amach, glaoigh ar keypoolrefill ar dtús</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Theip ar éisteacht ar aon phort. Úsáid -listen=0 más é seo atá uait.</translation>
</message>
<message>
<source>Failed to rescan the wallet during initialization</source>
<translation type="unfinished">Theip athscanadh ar an sparán le linn túsúchán</translation>
</message>
<message>
<source>Failed to verify database</source>
<translation type="unfinished">Theip ar fhíorú an mbunachar sonraí</translation>
</message>
<message>
<source>Fee rate (%s) is lower than the minimum fee rate setting (%s)</source>
<translation type="unfinished"> an ráta táillí (%s) níos ísle an socrú íosta rátaí táille (%s).</translation>
</message>
<message>
<source>Ignoring duplicate -wallet %s.</source>
<translation type="unfinished">Neamhaird ar sparán dhúbailt %s.</translation>
</message>
<message>
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation type="unfinished">Bloc geineasas mícheart aimsithe. datadir mícheart don líonra?</translation>
</message>
<message>
<source>Initialization sanity check failed. %s is shutting down.</source>
<translation type="unfinished">Theip ar seiceáil slánchiall túsúchán. %s ag múchadh.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Neamhleor ciste</translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation type="unfinished">Seoladh neamhbhailí -onion óstainm: '%s'</translation>
</message>
<message>
<source>Invalid -proxy address or hostname: '%s'</source>
<translation type="unfinished">Seoladh seachfhreastalaí ainm óstach neamhbhailí: '%s'</translation>
</message>
<message>
<source>Invalid P2P permission: '%s'</source>
<translation type="unfinished">Cead neamhbhailí P2P: '%s'</translation>
</message>
<message>
<source>Invalid amount for -%s=&lt;amount&gt;: '%s'</source>
<translation type="unfinished">Suim neamhbhailí do -%s=&lt;amount&gt;: '%s'</translation>
</message>
<message>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation type="unfinished">Mascghréas neamhbhailí sonraithe sa geal-liosta: '%s'</translation>
</message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation type="unfinished">Is port a shainiú le -whitebind: '%s'</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Níl dóthain tuairisceoirí comhaid ar fáil.</translation>
</message>
<message>
<source>Prune cannot be configured with a negative value.</source>
<translation type="unfinished"> féidir Bearradh a bheidh cumraithe le luach diúltach.</translation>
</message>
<message>
<source>Prune mode is incompatible with -txindex.</source>
<translation type="unfinished"> an mód bearrtha neamh-chomhoiriúnach le -txindex.</translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation type="unfinished">Laghdú -maxconnections ó %d go %d, mar gheall ar shrianadh an chórais.</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to execute statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Theip ar rith ráiteas chun an bunachar sonraí a fhíorú: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to prepare statement to verify database: %s</source>
<translation type="unfinished">SQLiteDatabase: Theip ar ullmhú ráiteas chun bunachar sonraí: %s a fhíorú</translation>
</message>
<message>
<source>SQLiteDatabase: Failed to read database verification error: %s</source>
<translation type="unfinished">SQLiteDatabase: Theip ar léamh earráid fíorú bunachar sonraí: %s</translation>
</message>
<message>
<source>SQLiteDatabase: Unexpected application id. Expected %u, got %u</source>
<translation type="unfinished">SQLiteDatabase: Aitheantas feidhmchlár nach raibh súil leis. Ag súil le %u, fuair %u</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation type="unfinished"> aithnítear rannán [%s].</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Theip ar síniú idirbheart</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation type="unfinished">Níl -walletdir "%s" sonraithe ann</translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation type="unfinished">Is cosán spleách é -walletdir "%s" sonraithe</translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation type="unfinished"> eolaire é -walletdir "%s" sonraithe</translation>
</message>
<message>
<source>Specified blocks directory "%s" does not exist.</source>
<translation type="unfinished">Níl eolaire bloic shonraithe "%s" ann.</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished"> an cód foinseach ar fáil ó %s.</translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished"> suim an idirbhirt -bheag chun an táille a íoc</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Seachnóidh an sparán níos an táille athsheachadán íosta a íoc.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Is bogearraí turgnamhacha é seo.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Is é seo an táille idirbhirt íosta a íocann ar gach idirbheart.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Seo an táille idirbhirt a íocfaidh sheolann idirbheart.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Méid an idirbhirt -bheag</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Níor cheart go mbeadh suimeanna idirbhirt diúltach</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation type="unfinished"> slabhra mempool -fhada ag an idirbheart</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Caithfidh ar a laghad faighteoir amháin a bheith ag idirbheart</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Idirbheart -mhór</translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished"> féidir ceangal le %s ar an ríomhaire seo (thug ceangail earráid %s ar ais)</translation>
</message>
<message>
<source>Unable to bind to %s on this computer. %s is probably already running.</source>
<translation type="unfinished"> féidir ceangal le %s ar an ríomhaire seo. Is dócha go bhfuil %s ag rith cheana féin.</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">Níorbh fhéidir cruthú comhad PID '%s': %s</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished"> féidir eochracha tosaigh a ghiniúint</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished"> féidir eochracha a ghiniúint</translation>
</message>
<message>
<source>Unable to start HTTP server. See debug log for details.</source>
<translation type="unfinished"> féidir freastalaí HTTP a thosú. Féach loga dífhabhtúcháin le tuilleadh sonraí.</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">Luach -blockfilterindex %s anaithnid.</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation type="unfinished">Anaithnid cineál seoladh '%s'</translation>
</message>
<message>
<source>Unknown change type '%s'</source>
<translation type="unfinished">Anaithnid cineál sóinseáil '%s'</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Líonra anaithnid sonraithe san -onlynet: '%s'</translation>
</message>
<message>
<source>Unsupported logging category %s=%s.</source>
<translation type="unfinished">Catagóir logáil gan tacaíocht %s=%s.</translation>
</message>
<message>
<source>User Agent comment (%s) contains unsafe characters.</source>
<translation type="unfinished"> carachtair neamhshábháilte i nóta tráchta (%s) Gníomhaire Úsáideora.</translation>
</message>
<message>
<source>Wallet needed to be rewritten: restart %s to complete</source>
<translation type="unfinished">Ba ghá an sparán a athscríobh: atosaigh %s chun críochnú</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

View File

@ -92,6 +92,11 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Exportar Lista de Enderezos</translation>
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<extracomment>An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</extracomment>
<translation type="unfinished">Houbo un erro tentando gardar a lista de enderezos en %1. Por favor proba de novo.</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">Exportación falida</translation>
</message>
@ -130,6 +135,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Repite novo contrasinal</translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished">Mostra frase contrasinal</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished">Encriptar moedeiro</translation>
</message>
@ -162,6 +171,30 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Moedeiro encriptado</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation type="unfinished">Introduce unha nova frase contrasinal para a carteira.&lt;br/&gt;Por favor utiliza una frase contrasinal que &lt;b&gt;teña dez ou máis caracteres aleatorios&lt;/b&gt;, ou &lt;b&gt;oito ou máis palabras&lt;/b&gt;.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation type="unfinished">Introduce a frase contrasinal anterior mais a nova frase contrasinal para a carteira.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation type="unfinished">Recorda que encriptar a tua carteira non protexe completamente que os teus bitcoins poidan ser roubados por malware que afecte ó teu computador.</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation type="unfinished">Carteira para ser encriptada</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation type="unfinished">A túa carteira vai a ser encriptada.</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation type="unfinished">A túa carteira está agora encriptada.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation type="unfinished">IMPORTANTE: Calquera copia de seguridade previa que fixeses do teu arquivo de moedeiro debería ser substituída polo recén xerado arquivo encriptado de moedeiro. Por razóns de seguridade, as copias de seguridade previas de un arquivo de moedeiro desencriptado tornaránse inútiles no momento no que comeces a emprega-lo novo, encriptado, moedeiro.</translation>
</message>
@ -195,12 +228,26 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
</message>
</context>
<context>
<name>QObject</name>
<name>BanTableModel</name>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Erro: O directorio de datos especificado "%1" non existe.</translation>
<source>IP/Netmask</source>
<translation type="unfinished">IP/Máscara de rede</translation>
</message>
<message>
<source>Banned Until</source>
<translation type="unfinished">Vedado ata</translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>Internal error</source>
<translation type="unfinished">Erro interno</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>unknown</source>
<translation type="unfinished">descoñecido</translation>
</message>
@ -252,77 +299,6 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Esta é unha build de test pre-lanzamento - emprégaa baixo o teu propio risco - non empregar para minado ou aplicacións de comerciantes</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation type="unfinished">Precaución: Non parece que esteamos totalmente de acordo cos nosos pares! Pode que precises actualizar, ou outros nodos poden precisar actualizarse.</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Detectada base de datos de bloques corrupta.</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Queres reconstruír a base de datos de bloques agora?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Carga completa</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Erro inicializando a base de datos de bloques</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Erro inicializando entorno de base de datos de moedeiro %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Erro cargando base de datos do bloque</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Erro abrindo base de datos de bloques</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Fallou escoitar en calquera porto. Emprega -listen=0 se queres isto.</translation>
</message>
<message>
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation type="unfinished">Bloque xénese incorrecto ou non existente. Datadir erróneo para a rede?</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Fondos insuficientes</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Non hai suficientes descritores de arquivo dispoñibles.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Fallou a sinatura da transacción</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">A cantidade da transacción é demasiado pequena</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">A transacción é demasiado grande</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Rede descoñecida especificada en -onlynet: '%s'</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -349,6 +325,14 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Saír da aplicación</translation>
</message>
<message>
<source>&amp;About %1</source>
<translation type="unfinished">&amp;A cerca de %1</translation>
</message>
<message>
<source>Show information about %1</source>
<translation type="unfinished">Mostra información acerca de %1</translation>
</message>
<message>
<source>About &amp;Qt</source>
<translation type="unfinished">Acerca de &amp;Qt</translation>
</message>
@ -357,10 +341,31 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Amosar información acerca de Qt</translation>
</message>
<message>
<source>Modify configuration options for %1</source>
<translation type="unfinished">Modifica as opcións de configuración de %1</translation>
</message>
<message>
<source>Create a new wallet</source>
<translation type="unfinished">Crear unha nova carteira</translation>
</message>
<message>
<source>&amp;Minimize</source>
<translation type="unfinished">&amp;Minimizar</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Moedeiro:</translation>
</message>
<message>
<source>Network activity disabled.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">Actividade da rede desactivada.</translation>
</message>
<message>
<source>Proxy is &lt;b&gt;enabled&lt;/b&gt;: %1</source>
<translation type="unfinished">Proxy &lt;b&gt;activado&lt;/b&gt;: %1</translation>
</message>
<message>
<source>Send coins to a Bitcoin address</source>
<translation type="unfinished">Enviar moedas a unha dirección Bitcoin</translation>
</message>
@ -381,6 +386,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">&amp;Recibir</translation>
</message>
<message>
<source>&amp;Options</source>
<translation type="unfinished">&amp;Opcións...</translation>
</message>
<message>
<source>Encrypt the private keys that belong to your wallet</source>
<translation type="unfinished">Encriptar as claves privadas que pertencen ao teu moedeiro</translation>
</message>
@ -389,6 +398,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Asina mensaxes cos teus enderezos Bitcoin para probar que che pertencen</translation>
</message>
<message>
<source>&amp;Verify message</source>
<translation type="unfinished">&amp;Verifica a mensaxe...</translation>
</message>
<message>
<source>Verify messages to ensure they were signed with specified Bitcoin addresses</source>
<translation type="unfinished">Verifica mensaxes para asegurar que foron asinados con enderezos Bitcoin específicos.</translation>
</message>
@ -460,6 +473,26 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Actualizado</translation>
</message>
<message>
<source>Node window</source>
<translation type="unfinished">Xanela de Nodo</translation>
</message>
<message>
<source>Open node debugging and diagnostic console</source>
<translation type="unfinished">Abre a consola de depuración e diagnostico do nodo</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation type="unfinished">&amp;Enderezos de envío</translation>
</message>
<message>
<source>&amp;Receiving addresses</source>
<translation type="unfinished">&amp;Enderezos de recepción</translation>
</message>
<message>
<source>Open a bitcoin: URI</source>
<translation type="unfinished">Abre una URI de Bitcoin</translation>
</message>
<message>
<source>Open Wallet</source>
<translation type="unfinished">Abrir Moedeiro</translation>
</message>
@ -472,6 +505,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Pechar moedeiro</translation>
</message>
<message>
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
<translation type="unfinished">Mostra a %1 mensaxe de axuda para obter unha lista cas posibles opcións de línea de comando de Bitcoin </translation>
</message>
<message>
<source>default wallet</source>
<translation type="unfinished">moedeiro por defecto</translation>
</message>
@ -480,6 +517,11 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Non hai moedeiros dispoñíbeis</translation>
</message>
<message>
<source>Wallet Name</source>
<extracomment>Label of the input field where the name of the wallet is entered.</extracomment>
<translation type="unfinished">Nome da Carteira</translation>
</message>
<message>
<source>&amp;Window</source>
<translation type="unfinished">&amp;Xanela</translation>
</message>
@ -500,6 +542,46 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
</translation>
</message>
<message>
<source>Warning: %1</source>
<translation type="unfinished">Aviso: %1</translation>
</message>
<message>
<source>Date: %1
</source>
<translation type="unfinished">Data: %1
</translation>
</message>
<message>
<source>Amount: %1
</source>
<translation type="unfinished">Cantidade: %1
</translation>
</message>
<message>
<source>Wallet: %1
</source>
<translation type="unfinished">Carteira: %1
</translation>
</message>
<message>
<source>Type: %1
</source>
<translation type="unfinished">Escribe: %1
</translation>
</message>
<message>
<source>Label: %1
</source>
<translation type="unfinished">Etiqueta: %1
</translation>
</message>
<message>
<source>Address: %1
</source>
<translation type="unfinished">Enderezo: %1
</translation>
</message>
<message>
<source>Sent transaction</source>
<translation type="unfinished">Transacción enviada</translation>
</message>
@ -508,6 +590,18 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Transacción entrante</translation>
</message>
<message>
<source>HD key generation is &lt;b&gt;enabled&lt;/b&gt;</source>
<translation type="unfinished">A xeración de clave HD está &lt;b&gt;activada&lt;/b&gt;</translation>
</message>
<message>
<source>HD key generation is &lt;b&gt;disabled&lt;/b&gt;</source>
<translation type="unfinished">A xeración de clave HD está &lt;b&gt;desactivada&lt;/b&gt;</translation>
</message>
<message>
<source>Private key &lt;b&gt;disabled&lt;/b&gt;</source>
<translation type="unfinished">Clave privada &lt;b&gt;desactivada&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 type="unfinished">O moedeiro está &lt;b&gt;encriptado&lt;/b&gt; e actualmente &lt;b&gt;desbloqueado&lt;/b&gt;</translation>
</message>
@ -515,10 +609,18 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<source>Wallet is &lt;b&gt;encrypted&lt;/b&gt; and currently &lt;b&gt;locked&lt;/b&gt;</source>
<translation type="unfinished">O moedeiro está &lt;b&gt;encriptado&lt;/b&gt; e actualmente &lt;b&gt;bloqueado&lt;/b&gt;</translation>
</message>
</context>
<message>
<source>Original message:</source>
<translation type="unfinished">Mensaxe orixinal:</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Coin Selection</source>
<translation type="unfinished">Selección de moeda</translation>
</message>
<message>
<source>Quantity:</source>
<translation type="unfinished">Cantidade:</translation>
</message>
@ -531,6 +633,14 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Taxa:</translation>
</message>
<message>
<source>Dust:</source>
<translation type="unfinished">po:</translation>
</message>
<message>
<source>After Fee:</source>
<translation type="unfinished">Despois de taxas:</translation>
</message>
<message>
<source>Change:</source>
<translation type="unfinished">Cambiar:</translation>
</message>
@ -551,6 +661,14 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Cantidade</translation>
</message>
<message>
<source>Received with label</source>
<translation type="unfinished">Recibida con etiqueta</translation>
</message>
<message>
<source>Received with address</source>
<translation type="unfinished">Recibida con enderezo</translation>
</message>
<message>
<source>Date</source>
<translation type="unfinished">Data</translation>
</message>
@ -567,6 +685,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Copiar cantidade</translation>
</message>
<message>
<source>&amp;Copy address</source>
<translation type="unfinished">&amp;Copiar enderezo</translation>
</message>
<message>
<source>Copy quantity</source>
<translation type="unfinished">Copiar cantidade</translation>
</message>
@ -583,6 +705,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Copiar bytes</translation>
</message>
<message>
<source>Copy dust</source>
<translation type="unfinished">Copiar po</translation>
</message>
<message>
<source>Copy change</source>
<translation type="unfinished">Copiar cambio</translation>
</message>
@ -599,15 +725,43 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">non</translation>
</message>
<message>
<source>This label turns red if any recipient receives an amount smaller than the current dust threshold.</source>
<translation type="unfinished">Esta etiqueta tórnase vermella se algún receptor recibe unha cantidade máis pequena que o actual límite de po.</translation>
</message>
<message>
<source>Can vary +/- %1 satoshi(s) per input.</source>
<translation type="unfinished">Pode variar +/- %1 satoshi(s) por entrada.</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(sen etiqueta)</translation>
</message>
<message>
<source>change from %1 (%2)</source>
<translation type="unfinished">Cambia de %1 a (%2)</translation>
</message>
<message>
<source>(change)</source>
<translation type="unfinished">(cambio)</translation>
</message>
</context>
<context>
<name>CreateWalletActivity</name>
<message>
<source>Create Wallet</source>
<extracomment>Title of window indicating the progress of creation of a new wallet.</extracomment>
<translation type="unfinished">Crea unha Carteira</translation>
</message>
<message>
<source>Create wallet failed</source>
<translation type="unfinished">Creación de carteira fallida</translation>
</message>
<message>
<source>Create wallet warning</source>
<translation type="unfinished">Creación de carteira con aviso</translation>
</message>
</context>
<context>
<name>OpenWalletActivity</name>
<message>
<source>default wallet</source>
@ -629,9 +783,49 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation type="unfinished">Crea unha Carteira</translation>
</message>
<message>
<source>Wallet Name</source>
<translation type="unfinished">Nome da Carteira</translation>
</message>
<message>
<source>Wallet</source>
<translation type="unfinished">Moedeiro</translation>
</message>
<message>
<source>Encrypt the wallet. The wallet will be encrypted with a passphrase of your choice.</source>
<translation type="unfinished">Encripta a carteira. A carteira sera encriptada cunha frase contrasinal que elixas.</translation>
</message>
<message>
<source>Encrypt Wallet</source>
<translation type="unfinished">Encriptar Carteira</translation>
</message>
<message>
<source>Advanced Options</source>
<translation type="unfinished">Opcións avanzadas</translation>
</message>
<message>
<source>Disable private keys for this wallet. Wallets with private keys disabled will have no private keys and cannot have an HD seed or imported private keys. This is ideal for watch-only wallets.</source>
<translation type="unfinished">Desactiva as claves privadas para esta carteira. Carteiras con claves privadas desactivadas non terán claves privadas e polo tanto non poderan ter unha semente HD ou claves privadas importadas. Esto é ideal para carteiras de solo visualización.</translation>
</message>
<message>
<source>Disable Private Keys</source>
<translation type="unfinished">Desactivar Claves Privadas</translation>
</message>
<message>
<source>Make a blank wallet. Blank wallets do not initially have private keys or scripts. Private keys and addresses can be imported, or an HD seed can be set, at a later time.</source>
<translation type="unfinished">Crear unha Carteira en blanco. As carteiras en blanco non teñen inicialmente claves privadas ou scripts. As claves privadas poden ser importadas ou unha semente HD poder ser configurada, máis adiante.</translation>
</message>
<message>
<source>Make Blank Wallet</source>
<translation type="unfinished">Crea unha Carteira en Blanco</translation>
</message>
<message>
<source>Create</source>
<translation type="unfinished">Crea</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
@ -672,6 +866,14 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">A dirección introducida '%1' non é unha dirección Bitcoin válida.</translation>
</message>
<message>
<source>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</source>
<translation type="unfinished">O enderezo "%1" xa existe como un enderezo de recepción ca etiqueta "%2" polo que non pode ser añadido como un enderezo de envío.</translation>
</message>
<message>
<source>The entered address "%1" is already in the address book with label "%2".</source>
<translation type="unfinished">O enderezo introducido "%1" xa existe na axenda de enderezos ca etiqueta "%2".</translation>
</message>
<message>
<source>Could not unlock wallet.</source>
<translation type="unfinished">Non se puido desbloquear o moedeiro.</translation>
</message>
@ -715,15 +917,15 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(of %n GB needed)</numerusform>
<numerusform>(of %n GB needed)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
<numerusform>(%n GB needed for full chain)</numerusform>
<numerusform>(%n GB needed for full chain)</numerusform>
</translation>
</message>
<message numerus="yes">
@ -773,6 +975,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Formulario</translation>
</message>
<message>
<source>Unknown</source>
<translation type="unfinished">Descoñecido...</translation>
</message>
<message>
<source>Last block time</source>
<translation type="unfinished">Hora do último bloque</translation>
</message>
@ -886,6 +1092,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Opcións de configuración</translation>
</message>
<message>
<source>Continue</source>
<translation type="unfinished">Continuar</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Erro</translation>
</message>
@ -938,6 +1148,17 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
</message>
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Save</source>
<translation type="unfinished">Gardar...</translation>
</message>
<message>
<source>Close</source>
<translation type="unfinished">Pechar</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
<source>Payment request error</source>
@ -969,6 +1190,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<context>
<name>QRImageWidget</name>
<message>
<source>&amp;Save Image</source>
<translation type="unfinished">&amp;Gardar Imaxe...</translation>
</message>
<message>
<source>&amp;Copy Image</source>
<translation type="unfinished">&amp;Copiar Imaxe</translation>
</message>
@ -1012,6 +1237,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Cadea de bloques</translation>
</message>
<message>
<source>Node window</source>
<translation type="unfinished">Xanela de Nodo</translation>
</message>
<message>
<source>Last block time</source>
<translation type="unfinished">Hora do último bloque</translation>
</message>
@ -1048,6 +1277,11 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Fóra:</translation>
</message>
<message>
<source>&amp;Copy address</source>
<extracomment>Context menu action to copy the address of a peer.</extracomment>
<translation type="unfinished">&amp;Copiar enderezo</translation>
</message>
<message>
<source>To</source>
<translation type="unfinished">A</translation>
</message>
@ -1087,6 +1321,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Copiar &amp;URI</translation>
</message>
<message>
<source>&amp;Copy address</source>
<translation type="unfinished">&amp;Copiar enderezo</translation>
</message>
<message>
<source>Could not unlock wallet.</source>
<translation type="unfinished">Non se puido desbloquear o moedeiro.</translation>
</message>
@ -1114,6 +1352,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Copiar &amp;Enderezo</translation>
</message>
<message>
<source>&amp;Save Image</source>
<translation type="unfinished">&amp;Gardar Imaxe...</translation>
</message>
<message>
<source>Payment information</source>
<translation type="unfinished">Información de Pago</translation>
</message>
@ -1164,6 +1406,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Taxa:</translation>
</message>
<message>
<source>After Fee:</source>
<translation type="unfinished">Despois de taxas:</translation>
</message>
<message>
<source>Change:</source>
<translation type="unfinished">Cambiar:</translation>
</message>
@ -1184,6 +1430,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Limpar tódolos campos do formulario</translation>
</message>
<message>
<source>Dust:</source>
<translation type="unfinished">po:</translation>
</message>
<message>
<source>Clear &amp;All</source>
<translation type="unfinished">Limpar &amp;Todo</translation>
</message>
@ -1216,6 +1466,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Copiar bytes</translation>
</message>
<message>
<source>Copy dust</source>
<translation type="unfinished">Copiar po</translation>
</message>
<message>
<source>Copy change</source>
<translation type="unfinished">Copiar cambio</translation>
</message>
@ -1654,6 +1908,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Cantidade mínima</translation>
</message>
<message>
<source>&amp;Copy address</source>
<translation type="unfinished">&amp;Copiar enderezo</translation>
</message>
<message>
<source>Export Transaction History</source>
<translation type="unfinished">Exportar Historial de Transaccións</translation>
</message>
@ -1705,6 +1963,10 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<context>
<name>WalletFrame</name>
<message>
<source>Create a new wallet</source>
<translation type="unfinished">Crear unha nova carteira</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Erro</translation>
</message>
@ -1751,4 +2013,75 @@ Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
<translation type="unfinished">Os datos do moedeiro foron gardados correctamente en %1.</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Esta é unha build de test pre-lanzamento - emprégaa baixo o teu propio risco - non empregar para minado ou aplicacións de comerciantes</translation>
</message>
<message>
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
<translation type="unfinished">Precaución: Non parece que esteamos totalmente de acordo cos nosos pares! Pode que precises actualizar, ou outros nodos poden precisar actualizarse.</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Detectada base de datos de bloques corrupta.</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Queres reconstruír a base de datos de bloques agora?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Carga completa</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Erro inicializando a base de datos de bloques</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Erro inicializando entorno de base de datos de moedeiro %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Erro cargando base de datos do bloque</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Erro abrindo base de datos de bloques</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Fallou escoitar en calquera porto. Emprega -listen=0 se queres isto.</translation>
</message>
<message>
<source>Incorrect or no genesis block found. Wrong datadir for network?</source>
<translation type="unfinished">Bloque xénese incorrecto ou non existente. Datadir erróneo para a rede?</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Fondos insuficientes</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Non hai suficientes descritores de arquivo dispoñibles.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Fallou a sinatura da transacción</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">A cantidade da transacción é demasiado pequena</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">A transacción é demasiado grande</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Rede descoñecida especificada en -onlynet: '%s'</translation>
</message>
</context>
</TS>

View File

@ -70,6 +70,12 @@
<translation type="unfinished">Estes son os teus enderezos de Bitcoin para enviar pagamentos. Asegurate sempre de comprobar a cantidade e maila dirección antes de enviar moedas.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">Estes son os teus enderezos de Bitcoin para recibir pagamentos. Emprega o botón 'Crear novo enderezo para recibir pagamentos' na solapa de recibir para crear novos enderezos.
Firmar é posible unicamente con enderezos de tipo 'legacy'.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">Copiar Enderezo</translation>
</message>
@ -245,10 +251,6 @@
<source>Amount</source>
<translation type="unfinished">Cantidade</translation>
</message>
<message>
<source>Internal</source>
<translation type="unfinished">Interno</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">

View File

@ -170,9 +170,31 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Wallet encrypted</source>
<translation type="unfinished"> િ </translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation type="unfinished"> િ .</translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation type="unfinished"> િ િ .</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Amount</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Inbound</source>
<extracomment>An inbound connection from a peer. An inbound connection is a connection initiated by a peer.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Outbound</source>
<extracomment>An outbound connection to a peer. An outbound connection is a connection initiated by us.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
@ -218,6 +240,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Create a new wallet</source>
<translation type="unfinished"> </translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
@ -237,6 +263,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<context>
<name>CoinControlDialog</name>
<message>
<source>Amount</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished"> </translation>
</message>
@ -272,14 +302,76 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<numerusform />
</translation>
</message>
<message>
<source>Welcome</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Welcome to %1.</source>
<translation type="unfinished"> %1.</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Age</source>
<extracomment>Title of Peers Table column which indicates the duration (length of time) since the peer connection started.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sent</source>
<extracomment>Title of Peers Table column which indicates the total amount of network information we have sent to the peer.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Type</source>
<extracomment>Title of Peers Table column which describes the type of peer connection. The "type" describes why the connection exists.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Inbound</source>
<extracomment>An Inbound Connection from a Peer.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Outbound</source>
<extracomment>An Outbound Connection to a Peer.</extracomment>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>RPCConsole</name>
<message>
<source>Name</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Sent</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ReceiveCoinsDialog</name>
<message>
<source>Show</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
@ -294,6 +386,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
@ -315,10 +411,18 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<numerusform />
</translation>
</message>
<message>
<source>Amount</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">િ</translation>
</message>
@ -335,6 +439,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">િ િિ </translation>
</message>
<message>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">િ</translation>
</message>
@ -348,6 +456,13 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>Create a new wallet</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>

View File

@ -2,16 +2,12 @@
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished">Danna dama don gyara adireshi ko labil</translation>
</message>
<message>
<source>Create a new address</source>
<translation type="unfinished">Ƙirƙiri sabon adireshi</translation>
</message>
<message>
<source>&amp;New</source>
<translation type="unfinished">Sabontawa</translation>
<translation type="unfinished">&amp;Sabontawa</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
@ -23,7 +19,7 @@
</message>
<message>
<source>C&amp;lose</source>
<translation type="unfinished">C&amp;Rasa</translation>
<translation type="unfinished">C&amp;Rufe</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
@ -54,6 +50,10 @@
<translation type="unfinished">Zaɓi adireshin don karɓar kuɗi internet da shi</translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation type="unfinished">c&amp;zaɓi</translation>
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished">adireshin aikawa</translation>
</message>
@ -85,7 +85,7 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
</message>
<message>
<source>Export Address List</source>
<translation type="unfinished">Fitarwar Jerin Adreshi</translation>
<translation type="unfinished">Fitarwar Jerin Adireshi</translation>
</message>
<message>
<source>Comma separated file</source>
@ -95,7 +95,7 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<extracomment>An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</extracomment>
<translation type="unfinished">An sami kuskure wajen ƙoƙarin ajiye jerin adireshi zuwa 1 %1. Da fatan za a sake gwadawa.</translation>
<translation type="unfinished">An sami kuskure wajen ƙoƙarin ajiye jerin adireshi zuwa %1. Da fatan za a sake gwadawa. </translation>
</message>
<message>
<source>Exporting Failed</source>
@ -105,16 +105,88 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished">Laƙabi</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">Adireshi</translation>
</message>
</context>
<message>
<source>(no label)</source>
<translation type="unfinished">(ba laƙabi)</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Enter passphrase</source>
<translation type="unfinished">shigar da kalmar sirri</translation>
</message>
<message>
<source>New passphrase</source>
<translation type="unfinished">sabuwar kalmar sirri</translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation type="unfinished">maimaita sabuwar kalmar sirri</translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished">nuna kalmar sirri</translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished">sakaye walet</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation type="unfinished">abunda ake son yi na buƙatan laƙabin sirri domin buɗe walet</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished">Bude Walet</translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished">canza laƙabin sirri</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation type="unfinished">tabbar da an sakaye walet</translation>
</message>
<message>
<source>Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt;LOSE ALL OF YOUR BITCOINS&lt;/b&gt;!</source>
<translation type="unfinished">Jan kunne: idan aka sakaye walet kuma aka manta laƙabin sirri, za a Warning: If you encrypt your wallet and lose your passphrase, you will &lt;b&gt; RASA DUKKAN BITCOINS&lt;/b&gt;!</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation type="unfinished">ka tabbata kana son sakaye walet?</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation type="unfinished">an yi nasarar sakaye walet</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation type="unfinished">shigar da tsoho da sabon laƙabin sirrin walet din</translation>
</message>
<message>
<source>Wallet to be encrypted</source>
<translation type="unfinished">walet din da ake buƙatan sakayewa</translation>
</message>
<message>
<source>Your wallet is about to be encrypted. </source>
<translation type="unfinished">ana daf da sakaye walet</translation>
</message>
<message>
<source>Your wallet is now encrypted. </source>
<translation type="unfinished">ka yi nasarar sakaye walet dinka</translation>
</message>
<message>
<source>Wallet encryption failed</source>
<translation type="unfinished">ba ayi nasarar sakaye walet ba</translation>
</message>
</context>
<context>
<name>QObject</name>
@ -180,6 +252,13 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>(no label)</source>
<translation type="unfinished">(ba laƙabi)</translation>
</message>
</context>
<context>
<name>Intro</name>
<message>
<source>Bitcoin</source>
@ -224,6 +303,17 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished">Laƙabi</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(ba laƙabi)</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
@ -232,7 +322,11 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
<numerusform />
</translation>
</message>
</context>
<message>
<source>(no label)</source>
<translation type="unfinished">(ba laƙabi)</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
@ -244,6 +338,17 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished">Laƙabi</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(ba laƙabi)</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file</source>
@ -251,6 +356,10 @@ zaka iya shiga ne kawai da adiresoshin 'na musamman' kawai.</translation>
<translation type="unfinished">waƙafin rabuwar fayil</translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished">Laƙabi</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">Adireshi</translation>
</message>

3737
src/qt/locale/bitcoin_hak.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2504
src/qt/locale/bitcoin_hi.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -258,13 +258,6 @@
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation type="unfinished">Villa við lestur %s! Allir lyklar fóru inn á réttan hátt, en færslugögn eða færslugildi gætu verið röng eða horfin.</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -865,4 +858,11 @@
<translation type="unfinished">Flytja gögn í flipanum í skrá</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Error reading %s! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
<translation type="unfinished">Villa við lestur %s! Allir lyklar fóru inn á réttan hátt, en færslugögn eða færslugildi gætu verið röng eða horfin.</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -243,14 +243,6 @@
<context>
<name>QObject</name>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Қате: берілген "%1" дерек директориясы жоқ.</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">Қате: конфигурация файлы талданбайды: %1.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Қате: %1</translation>
</message>
@ -310,25 +302,6 @@
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Invalid amount for -fallbackfee=&lt;amount&gt;: '%s'</source>
<translation type="unfinished">-fallbackfee=&lt;amount&gt; үшін қате сан: "%s"</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Транзакция өте кішкентай</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Транзакция өте үлкен</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Әмиян(дар) тексерілуде</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -496,10 +469,6 @@
<translation type="unfinished">Дискідегі блоктар инедекстелуде...</translation>
</message>
<message>
<source>Reindexing blocks on disk</source>
<translation type="unfinished">Дискідегі блоктар қайта индекстелуде</translation>
</message>
<message>
<source>Request payments (generates QR codes and bitcoin: URIs)</source>
<translation type="unfinished">Төлем талап ету (QR кодтары мен биткоин құрады: URI)</translation>
</message>
@ -520,7 +489,7 @@
</message>
<message>
<source>%1 behind</source>
<translation type="unfinished">%1 қалмады</translation>
<translation type="unfinished">%1 артта</translation>
</message>
<message>
<source>Catching up</source>
@ -528,7 +497,7 @@
</message>
<message>
<source>Error</source>
<translation type="unfinished">қате</translation>
<translation type="unfinished">Қате</translation>
</message>
<message>
<source>Warning</source>
@ -536,7 +505,7 @@
</message>
<message>
<source>Information</source>
<translation type="unfinished">Информация</translation>
<translation type="unfinished">Ақпарат</translation>
</message>
<message>
<source>Up to date</source>
@ -924,4 +893,19 @@
<translation type="unfinished">Қазіргі қойыншадағы деректерді файлға экспорттау</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Транзакция өте кішкентай</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Транзакция өте үлкен</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Әмиян(дар) тексерілуде</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

245
src/qt/locale/bitcoin_kn.ts Normal file
View File

@ -0,0 +1,245 @@
<TS version="2.1" language="kn">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished">ಿ ಿ ಿ ಿ</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished">ಿಿ ಿ ಿ ಿಿಿ.</translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation type="unfinished"> ಿ ಿಿ.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation type="unfinished">ಿ ಿ ಿ ಿಿ ಿ . ಿ ಿ ಿ ಿಿಿ.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished"> ಿ ಿ ಿ ಿಿ ಿ . ಿ ಿ ಿ 'ಪಡೆಯುವ' ಿ 'ಹೊಸ ಪಾವತಿಯನ್ನು ರಚಿಸಿ' ಿ. ಿ 'ಲೆಗೆಸಿ' ಿ ಿ ಿಿ .</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation type="unfinished"> ಿ ಿ ಿ ಿ ಿ.</translation>
</message>
<message>
<source>Enter the old passphrase and new passphrase for the wallet.</source>
<translation type="unfinished"> ಿ ಿಿಿ.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation type="unfinished">ಿ ಿ ಿ ಿ ಿ ಿ ಿ ಿ ಿ ಿಿ ಿಿ ಿಿ ಿಿ.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation type="unfinished">: ಿಿ ಿಿ ಿಿ ಿ ಿ ಿಿ ಿ. ಿ, ಿಿ ಿ .</translation>
</message>
<message>
<source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
<translation type="unfinished"> ಿ ಿ ಿ ಿ ಿ.</translation>
</message>
</context>
<context>
<name>QObject</name>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
<translation type="unfinished"> ಿಿ ಿ ಿ . ಿ ಿ ಿ. ಿ ಿ ಿಿ, ಿಿ.</translation>
</message>
<message>
<source>The block index db contains a legacy 'txindex'. To clear the occupied disk space, run a full -reindex, otherwise ignore this error. This error message will not be displayed again.</source>
<translation type="unfinished"> ಿ ಿ, ಿಿ ಿ . ಿ ಿ ಿಿ ಿಿ . ಿ ಿ ಿ ಿಿ ಿಿಿ. ಿ ಿ, ಿ ಿಿ 'txindex' ಿ ಿಿಿ. ಿ.</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation type="unfinished"> ಿ ಿ ಿ ಿಿಿ ಿ ಿ ಿಿ ಿ , ಿ ಿ ಿ ಿ.</translation>
</message>
<message>
<source>This is the maximum transaction fee you pay (in addition to the normal fee) to prioritize partial spend avoidance over regular coin selection.</source>
<translation type="unfinished"> ಿ ಿ ಿ ಿಿ ಿ ಿ ಿ ಿ ಿಿ.</translation>
</message>
<message>
<source>Unsupported chainstate database format found. Please restart with -reindex-chainstate. This will rebuild the chainstate database.</source>
<translation type="unfinished">ಿ ಿ ಿಿ. ಿ -reindex-chainstate ಿ ಿಿ. ಿ ಿ ಿಿ ಿ.</translation>
</message>
<message>
<source>Wallet created successfully. The legacy wallet type is being deprecated and support for creating and opening legacy wallets will be removed in the future.</source>
<translation type="unfinished"> ಿಿ ಿಿ. ಿ ಿಿ ಿಿ ಿ ಿ, ಿ.</translation>
</message>
<message>
<source>-reindex-chainstate option is not compatible with -blockfilterindex. Please temporarily disable blockfilterindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.</source>
<translation type="unfinished">-reindex-chainstate -blockfilterindex ಿ. -reindex-chainstate ಿಿ blockfilterindex ಿಿಿ ಿ ಿ -reindex ಿ.</translation>
</message>
<message>
<source>-reindex-chainstate option is not compatible with -coinstatsindex. Please temporarily disable coinstatsindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.</source>
<translation type="unfinished">ಿಿ -coinstatsindex ಿ -reindex-chainstate ಿ ಿ . ಿ -reindex-chainstate ಿ ಿಿ coinstatsindex ಿಿ ಿಿಿ -reindex ಿಿ ಿ ಿಿಿ.</translation>
</message>
<message>
<source>-reindex-chainstate option is not compatible with -txindex. Please temporarily disable txindex while using -reindex-chainstate, or replace -reindex-chainstate with -reindex to fully rebuild all indexes.</source>
<translation type="unfinished">ಿ. -txindex ಿಿ -reindex-chainstate -reindex ಿಿ ಿಿ. -reindex-chainstate ಿ -txindex ಿಿ ಿಿಿ.
 
 </translation>
</message>
<message>
<source>Error: Duplicate descriptors created during migration. Your wallet may be corrupted.</source>
<translation type="unfinished">: ವರ್ಣನೆಗಳ ಿಿ ಿ ಿ ಿಿ. ಿ ಿ ಿ.</translation>
</message>
<message>
<source>Failed to rename invalid peers.dat file. Please move or delete it and try again.</source>
<translation type="unfinished"> peers.dat ಿ ಿಿ. ಿ ಿ ಿಿ ಿಿ.</translation>
</message>
<message>
<source>Incompatible options: -dnsseed=1 was explicitly specified, but -onlynet forbids connections to IPv4/IPv6</source>
<translation type="unfinished"> : -dnsseed=1 ಿಿ, -onlynet IPv4/IPv6 ಿಿ.
 
 </translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is explicitly forbidden: -onion=0</source>
<translation type="unfinished"> Tor ಿಿಿ (-onlynet=onion), Tor ಿ ಿ ಿಿಿ: -onion=0.</translation>
</message>
<message>
<source>Outbound connections restricted to Tor (-onlynet=onion) but the proxy for reaching the Tor network is not provided: none of -proxy, -onion or -listenonion is given</source>
<translation type="unfinished"> Tor ಿಿಿ (-onlynet=onion), Tor ಿ ಿಿ: -proxy, -onion -listenonion ಿ ಿ.
 
 </translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished"> ಿ ಿ ಿ.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished"> ಿ ಿ ಿ .</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished"> ಿ ಿ ಿ ಿ ಿ ಿ .</translation>
</message>
<message>
<source>Transaction needs a change address, but we can't generate it.</source>
<translation type="unfinished">ಿ ಿಿ ಿ ಿಿ ಿ, ಿ.</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

View File

@ -2,10 +2,22 @@
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished">کرتەی-ڕاست بکە بۆ دەسکاری کردنی ناونیشان یان پێناسە</translation>
</message>
<message>
<source>Create a new address</source>
<translation type="unfinished">ناوونیشانێکی نوێ دروست بکە</translation>
</message>
<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation type="unfinished">کۆپیکردنی ناونیشانی هەڵبژێردراوی ئێستا بۆ کلیپ بۆردی سیستەم</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;Kopi bike</translation>
</message>
@ -15,7 +27,7 @@
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished">Navnîşana hilbijartî ji lîsteyê rake</translation>
<translation type="unfinished">Navnîşana hilbijartî ji lîsteyê bibe</translation>
</message>
<message>
<source>Enter address or label to search</source>
@ -27,15 +39,15 @@
</message>
<message>
<source>&amp;Export</source>
<translation type="unfinished">Derxîne</translation>
<translation type="unfinished">&amp;Derxîne</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished"> bibe</translation>
<translation type="unfinished">&amp; bibe</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished">Navnîşana ku ew ê koîn were şandin, hilbijêre</translation>
<translation type="unfinished">Navnîşana ku ew ê koîn werin şandin, hilbijêre</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
@ -54,6 +66,16 @@
<translation type="unfinished">Navnîşanên stendinê</translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation type="unfinished">ئەمانە ناونیشانی بیتکۆبیتەکانی تۆنە بۆ ناردنی پارەدانەکان. هەمیشە بڕی و ناونیشانی وەرگرەکان بپشکنە پێش ناردنی دراوەکان.</translation>
</message>
<message>
<source>These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.
Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">ئەمانە ناونیشانی بیتکۆبیتەکانی تۆنە بۆ وەرگرتنی پارەدانەکان. دوگمەی 'دروستکردنیناونیشانی وەرگرتنی نوێ' لە تابی وەرگرتندا بۆ دروستکردنی ناونیشانی نوێ بەکاربێنە.
واژووکردن تەنها دەکرێت لەگەڵ ناونیشانەکانی جۆری 'میرات'.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp;Navnîşanê kopî bike</translation>
</message>
@ -69,7 +91,16 @@
<source>Export Address List</source>
<translation type="unfinished">Lîsteya navnîşanan derxîne</translation>
</message>
</context>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<extracomment>An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</extracomment>
<translation type="unfinished">هەڵەیەک ڕوویدا لە هەوڵی خەزنکردنی لیستی ناونیشانەکە بۆ %1. تکایە دووبارە هەوڵ دەوە.</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">هەناردەکردن سەرکەوتوو نەبوو</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
@ -88,6 +119,10 @@
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation type="unfinished">دیالۆگی دەستەواژەی تێپەڕبوون</translation>
</message>
<message>
<source>Enter passphrase</source>
<translation type="unfinished">Pêborîna xwe têkevê</translation>
</message>
@ -108,6 +143,10 @@
<translation type="unfinished">Şîfrekirina cizdên</translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation type="unfinished">او شوله بو ور کرنا کیف پاره گرکه رمزا کیفه وؤ یه پاره بزانی</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished">Kilîda cizdên veke</translation>
</message>
@ -127,9 +166,25 @@
<source>Wallet encrypted</source>
<translation type="unfinished">Cizdan hate şîfrekirin</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation type="unfinished">دەستەواژەی تێپەڕەوی نوێ بنووسە بۆ جزدان. &lt;br/&gt;تکایە دەستەواژەی تێپەڕێک بەکاربێنە لە &lt;b&gt;دە یان زیاتر لە هێما هەڕەمەکییەکان&lt;/b&gt;یان &lt;b&gt;هەشت یان وشەی زیاتر&lt;/b&gt;.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
<translation type="unfinished">بیرت بێت کە ڕەمزاندنی جزدانەکەت ناتوانێت بەتەواوی بیتکۆبیتەکانت بپارێزێت لە دزرابوون لەلایەن وورنەری تووشکردنی کۆمپیوتەرەکەت.</translation>
</message>
<message>
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
<translation type="unfinished">گرنگ: هەر پاڵپشتێکی پێشووت دروست کردووە لە فایلی جزدانەکەت دەبێت جێگۆڕکێی پێ بکرێت لەگەڵ فایلی جزدانی نهێنی تازە دروستکراو. لەبەر هۆکاری پاراستن، پاڵپشتەکانی پێشووی فایلی جزدانێکی نهێنی نەکراو بێ سوود دەبن هەر کە دەستت کرد بە بەکارهێنانی جزدانی نوێی کۆدکراو.</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Amount</source>
<translation type="unfinished">سەرجەم</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
@ -176,9 +231,29 @@
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;About %1</source>
<translation type="unfinished">&amp;دەربارەی %1</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Cizdan:</translation>
</message>
<message>
<source>&amp;Send</source>
<translation type="unfinished">&amp;ناردن</translation>
</message>
<message>
<source>&amp;File</source>
<translation type="unfinished">&amp;فایل</translation>
</message>
<message>
<source>&amp;Settings</source>
<translation type="unfinished">&amp;ڕێکخستنەکان</translation>
</message>
<message>
<source>&amp;Help</source>
<translation type="unfinished">&amp;یارمەتی</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
@ -187,8 +262,16 @@
</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">هەڵە</translation>
</message>
<message>
<source>Warning</source>
<translation type="unfinished">ئاگاداری</translation>
</message>
<message>
<source>Information</source>
<translation type="unfinished">Agahî</translation>
<translation type="unfinished">زانیاری</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
@ -200,17 +283,66 @@
</message>
</context>
<context>
<name>UnitDisplayStatusBarControl</name>
<message>
<source>Unit to show amounts in. Click to select another unit.</source>
<translation type="unfinished">یەکە بۆ نیشاندانی بڕی کرتە بکە بۆ دیاریکردنی یەکەیەکی تر.</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Amount:</source>
<translation type="unfinished">کۆ:</translation>
</message>
<message>
<source>Fee:</source>
<translation type="unfinished">تێچوون:</translation>
</message>
<message>
<source>Amount</source>
<translation type="unfinished">سەرجەم</translation>
</message>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message>
<source>yes</source>
<translation type="unfinished">بەڵێ</translation>
</message>
<message>
<source>no</source>
<translation type="unfinished">نەخێر</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
<source>Address "%1" already exists as a receiving address with label "%2" and so cannot be added as a sending address.</source>
<translation type="unfinished">ناونیشان "%1" پێشتر هەبوو وەک ناونیشانی وەرگرتن لەگەڵ ناونیشانی "%2" و بۆیە ناتوانرێت زیاد بکرێت وەک ناونیشانی ناردن.</translation>
</message>
</context>
<context>
<name>FreespaceChecker</name>
<message>
<source>name</source>
<translation type="unfinished">ناو</translation>
</message>
<message>
<source>Directory already exists. Add %1 if you intend to create a new directory here.</source>
<translation type="unfinished">دایەرێکتۆری پێش ئێستا هەیە. %1 زیاد بکە ئەگەر بەتەما بیت لێرە ڕێنیشاندەرێکی نوێ دروست بکەیت.</translation>
</message>
<message>
<source>Cannot create data directory here.</source>
<translation type="unfinished">ناتوانیت لێرە داتا دروست بکەیت.</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
@ -241,10 +373,106 @@
<numerusform />
</translation>
</message>
<message>
<source>%1 will download and store a copy of the Bitcoin block chain.</source>
<translation type="unfinished">%1 کۆپیەکی زنجیرەی بلۆکی بیتکۆپ دائەبەزێنێت و خەزنی دەکات.</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">هەڵە</translation>
</message>
<message>
<source>Welcome</source>
<translation type="unfinished">بەخێربێن</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 type="unfinished">دووبارە کردنەوەی ئەم ڕێکخستنە پێویستی بە دووبارە داگرتنی تەواوی بەربەستەکە هەیە. خێراترە بۆ داگرتنی زنجیرەی تەواو سەرەتا و داگرتنی دواتر. هەندێک تایبەتمەندی پێشکەوتوو لە کار دەهێنێت.</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 type="unfinished">ئەم هاوکاتکردنە سەرەتاییە زۆر داوای دەکات، و لەوانەیە کێشەکانی رەقەواڵە لەگەڵ کۆمپیوتەرەکەت دابخات کە پێشتر تێبینی نەکراو بوو. هەر جارێک کە %1 رادەدەیت، بەردەوام دەبێت لە داگرتن لەو شوێنەی کە بەجێی هێشت.</translation>
</message>
<message>
<source>If you have chosen to limit block chain storage (pruning), the historical data must still be downloaded and processed, but will be deleted afterward to keep your disk usage low.</source>
<translation type="unfinished">ئەگەر تۆ دیاریت کردووە بۆ سنووردارکردنی کۆگە زنجیرەی بلۆک (کێڵکردن)، هێشتا داتای مێژووی دەبێت دابەزێنرێت و پرۆسەی بۆ بکرێت، بەڵام دواتر دەسڕدرێتەوە بۆ ئەوەی بەکارهێنانی دیسکەکەت کەم بێت.</translation>
</message>
</context>
<context>
<name>HelpMessageDialog</name>
<message>
<source>version</source>
<translation type="unfinished">وەشان</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<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 type="unfinished">%1 لە ئێستادا هاوکات دەکرێت. سەرپەڕ و بلۆکەکان لە هاوتەمەنەکان دابەزێنێت و کارایان دەکات تا گەیشتن بە سەرەی زنجیرەی بلۆک.</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Options</source>
<translation type="unfinished">هەڵبژاردنەکان</translation>
</message>
<message>
<source>Reverting this setting requires re-downloading the entire blockchain.</source>
<translation type="unfinished">دووبارە کردنەوەی ئەم ڕێکخستنە پێویستی بە دووبارە داگرتنی تەواوی بەربەستەکە هەیە.</translation>
</message>
<message>
<source>User Interface &amp;language:</source>
<translation type="unfinished">ڕووکاری بەکارهێنەر &amp;زمان:</translation>
</message>
<message>
<source>The user interface language can be set here. This setting will take effect after restarting %1.</source>
<translation type="unfinished">زمانی ڕووکاری بەکارهێنەر دەکرێت لێرە دابنرێت. ئەم ڕێکخستنە کاریگەر دەبێت پاش دەستپێکردنەوەی %1.</translation>
</message>
<message>
<source>The configuration file is used to specify advanced user options which override GUI settings. Additionally, any command-line options will override this configuration file.</source>
<extracomment>Explanatory text about the priority order of instructions considered by client. The order from high to low being: command-line, configuration file, GUI settings.</extracomment>
<translation type="unfinished">فایلی شێوەپێدان بەکاردێت بۆ دیاریکردنی هەڵبژاردنەکانی بەکارهێنەری پێشکەوتوو کە زیادەڕەوی لە ڕێکخستنەکانی GUI دەکات. لەگەڵ ئەوەش، هەر بژاردەکانی هێڵی فەرمان زیادەڕەوی دەکات لە سەر ئەم فایلە شێوەپێدانە.</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">هەڵە</translation>
</message>
</context>
<context>
<name>OverviewPage</name>
<message>
<source>Total:</source>
<translation type="unfinished">گشتی</translation>
</message>
<message>
<source>Privacy mode activated for the Overview tab. To unmask the values, uncheck Settings-&gt;Mask values.</source>
<translation type="unfinished">دۆخی تایبەتمەندی چالاک کرا بۆ تابی گشتی. بۆ کردنەوەی بەهاکان، بەهاکان ڕێکخستنەکان&gt;ماسک.</translation>
</message>
</context>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>or</source>
<translation type="unfinished">یان</translation>
</message>
</context>
<context>
<name>PaymentServer</name>
<message>
<source>Cannot start bitcoin: click-to-pay handler</source>
<translation type="unfinished">ناتوانێت دەست بکات بە bitcoin: کرتە بکە بۆ-پارەدانی کار</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Sent</source>
<extracomment>Title of Peers Table column which indicates the total amount of network information we have sent to the peer.</extracomment>
<translation type="unfinished">نێدرا</translation>
</message>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished">Navnîşan</translation>
@ -254,10 +482,132 @@
<extracomment>Title of Peers Table column which describes the type of peer connection. The "type" describes why the connection exists.</extracomment>
<translation type="unfinished">Cure</translation>
</message>
<message>
<source>Network</source>
<extracomment>Title of Peers Table column which states the network the peer connected through.</extracomment>
<translation type="unfinished">تۆڕ</translation>
</message>
</context>
<context>
<name>QRImageWidget</name>
<message>
<source>Resulting URI too long, try to reduce the text for label / message.</source>
<translation type="unfinished">ئەنجامی URL زۆر درێژە، هەوڵ بدە دەقەکە کەم بکەیتەوە بۆ پێناسە / نامە.</translation>
</message>
</context>
<context>
<name>RPCConsole</name>
<message>
<source>&amp;Information</source>
<translation type="unfinished">&amp;زانیاری</translation>
</message>
<message>
<source>General</source>
<translation type="unfinished">گشتی</translation>
</message>
<message>
<source>Network</source>
<translation type="unfinished">تۆڕ</translation>
</message>
<message>
<source>Name</source>
<translation type="unfinished">ناو</translation>
</message>
<message>
<source>Sent</source>
<translation type="unfinished">نێدرا</translation>
</message>
<message>
<source>Version</source>
<translation type="unfinished">وەشان</translation>
</message>
<message>
<source>Services</source>
<translation type="unfinished">خزمەتگوزاریەکان</translation>
</message>
<message>
<source>&amp;Open</source>
<translation type="unfinished">&amp;کردنەوە</translation>
</message>
<message>
<source>Totals</source>
<translation type="unfinished">گشتییەکان</translation>
</message>
<message>
<source>In:</source>
<translation type="unfinished">لە ناو</translation>
</message>
<message>
<source>Out:</source>
<translation type="unfinished">لەدەرەوە</translation>
</message>
<message>
<source>1 &amp;hour</source>
<translation type="unfinished">1&amp;سات</translation>
</message>
<message>
<source>1 &amp;week</source>
<translation type="unfinished">1&amp;هەفتە</translation>
</message>
<message>
<source>1 &amp;year</source>
<translation type="unfinished">1&amp;ساڵ</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished">بەڵێ</translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">نەخێر</translation>
</message>
<message>
<source>To</source>
<translation type="unfinished">بۆ</translation>
</message>
<message>
<source>From</source>
<translation type="unfinished">لە</translation>
</message>
</context>
<context>
<name>ReceiveCoinsDialog</name>
<message>
<source>&amp;Amount:</source>
<translation type="unfinished">&amp;سەرجەم:</translation>
</message>
<message>
<source>&amp;Message:</source>
<translation type="unfinished">&amp;پەیام:</translation>
</message>
<message>
<source>Clear</source>
<translation type="unfinished">پاککردنەوە</translation>
</message>
<message>
<source>Show the selected request (does the same as double clicking an entry)</source>
<translation type="unfinished">پیشاندانی داواکارییە دیاریکراوەکان (هەمان کرتەی دووانی کرتەکردن دەکات لە تۆمارێک)</translation>
</message>
<message>
<source>Show</source>
<translation type="unfinished">پیشاندان</translation>
</message>
<message>
<source>Remove</source>
<translation type="unfinished">سڕینەوە</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Amount:</source>
<translation type="unfinished">کۆ:</translation>
</message>
<message>
<source>Message:</source>
<translation type="unfinished">پەیام:</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Cizdan:</translation>
</message>
@ -273,12 +623,50 @@
<translation type="unfinished">Etîket</translation>
</message>
<message>
<source>Message</source>
<translation type="unfinished">پەیام</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message>
<source>Amount:</source>
<translation type="unfinished">کۆ:</translation>
</message>
<message>
<source>Fee:</source>
<translation type="unfinished">تێچوون:</translation>
</message>
<message>
<source>Hide transaction fee settings</source>
<translation type="unfinished">شاردنەوەی ڕێکخستنەکانی باجی مامەڵە</translation>
</message>
<message>
<source>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
<translation type="unfinished">کاتێک قەبارەی مامەڵە کەمتر بێت لە بۆشایی بلۆکەکان، لەوانەیە کانەکان و گرێکانی گواستنەوە کەمترین کرێ جێبەجێ بکەن. پێدانی تەنیا ئەم کەمترین کرێیە تەنیا باشە، بەڵام ئاگاداربە کە ئەمە دەتوانێت ببێتە هۆی ئەوەی کە هەرگیز مامەڵەیەکی پشتڕاستکردنەوە ئەنجام بدرێت جارێک داواکاری زیاتر هەیە بۆ مامەڵەکانی بیت کۆبیتکۆ لەوەی کە تۆڕەکە دەتوانێت ئەنجامی بدات.</translation>
</message>
<message>
<source>or</source>
<translation type="unfinished">یان</translation>
</message>
<message>
<source>Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.</source>
<extracomment>Text to inform a user attempting to create a transaction of their current options. At this stage, a user can only create a PSBT. This string is displayed when private keys are disabled and an external signer is not available.</extracomment>
<translation type="unfinished">تکایە، پێداچوونەوە بکە بە پێشنیارەکانی مامەڵەکەت. ئەمە مامەڵەیەکی بیتکۆپەکی کەبەشیونکراو (PSBT) بەرهەمدەهێنێت کە دەتوانیت پاشەکەوتی بکەیت یان کۆپی بکەیت و پاشان واژووی بکەیت لەگەڵ بۆ ئەوەی بە دەرهێڵی %1 جزدانێک، یان جزدانێکی رەقەواڵەی گونجاو بە PSBT.</translation>
</message>
<message>
<source>Please, review your transaction.</source>
<extracomment>Text to prompt a user to review the details of the transaction they are attempting to send.</extracomment>
<translation type="unfinished">تکایە، چاو بە مامەڵەکەتدا بخشێنەوە.</translation>
</message>
<message>
<source>The recipient address is not valid. Please recheck.</source>
<translation type="unfinished">ناونیشانی وەرگرتنەکە دروست نییە. تکایە دووبارە پشکنین بکەوە.</translation>
</message>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
@ -292,11 +680,53 @@
</message>
</context>
<context>
<name>SendCoinsEntry</name>
<message>
<source>Message:</source>
<translation type="unfinished">پەیام:</translation>
</message>
</context>
<context>
<name>SignVerifyMessageDialog</name>
<message>
<source>Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction!</source>
<translation type="unfinished">ناونیشانی وەرگرەکە بنووسە، نامە (دڵنیابە لەوەی کە جیاکەرەوەکانی هێڵ، مەوداکان، تابەکان، و هتد بە تەواوی کۆپی بکە) و لە خوارەوە واژووی بکە بۆ سەلماندنی نامەکە. وریابە لەوەی کە زیاتر نەیخوێنیتەوە بۆ ناو واژووەکە لەوەی کە لە خودی پەیامە واژووەکەدایە، بۆ ئەوەی خۆت بەدوور بگریت لە فێڵکردن لە هێرشی پیاوان لە ناوەنددا. سەرنج بدە کە ئەمە تەنیا لایەنی واژووکردن بە ناونیشانەکە وەربگرە، ناتوانێت نێرەری هیچ مامەڵەیەک بسەلمێنێت!</translation>
</message>
<message>
<source>Click "Sign Message" to generate signature</source>
<translation type="unfinished">کرتە بکە لەسەر "نامەی واژوو" بۆ دروستکردنی واژوو</translation>
</message>
<message>
<source>Please check the address and try again.</source>
<translation type="unfinished">تکایە ناونیشانەکە بپشکنە و دووبارە هەوڵ دەوە.</translation>
</message>
<message>
<source>Please check the signature and try again.</source>
<translation type="unfinished">تکایە واژووەکە بپشکنە و دووبارە هەوڵ دەوە.</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message>
<source>Status</source>
<translation type="unfinished">بارودۆخ</translation>
</message>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
<message>
<source>Source</source>
<translation type="unfinished">سەرچاوە</translation>
</message>
<message>
<source>From</source>
<translation type="unfinished">لە</translation>
</message>
<message>
<source>To</source>
<translation type="unfinished">بۆ</translation>
</message>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
@ -304,7 +734,23 @@
<numerusform />
</translation>
</message>
</context>
<message>
<source>Message</source>
<translation type="unfinished">پەیام</translation>
</message>
<message>
<source>Amount</source>
<translation type="unfinished">سەرجەم</translation>
</message>
<message>
<source>true</source>
<translation type="unfinished">دروستە</translation>
</message>
<message>
<source>false</source>
<translation type="unfinished">نادروستە</translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
@ -320,6 +766,10 @@
<translation type="unfinished">Etîket</translation>
</message>
<message>
<source>Sent to</source>
<translation type="unfinished">ناردن بۆ</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(etîket tune)</translation>
</message>
@ -327,6 +777,14 @@
<context>
<name>TransactionView</name>
<message>
<source>Sent to</source>
<translation type="unfinished">ناردن بۆ</translation>
</message>
<message>
<source>Enter address, transaction id, or label to search</source>
<translation type="unfinished">ناونیشانێک بنووسە، ناسنامەی مامەڵە، یان ناولێنانێک بۆ گەڕان بنووسە</translation>
</message>
<message>
<source>Date</source>
<translation type="unfinished">Tarîx</translation>
</message>
@ -342,16 +800,70 @@
<source>Address</source>
<translation type="unfinished">Navnîşan</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">هەناردەکردن سەرکەوتوو نەبوو</translation>
</message>
<message>
<source>to</source>
<translation type="unfinished">بۆ</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>Error</source>
<translation type="unfinished">هەڵە</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation type="unfinished">Derxîne</translation>
<translation type="unfinished">&amp;Derxîne</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished">Daneya di hilpekîna niha de bi rêya dosyayekê derxîne</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation type="unfinished">تکایە بپشکنە کە بەروار و کاتی کۆمپیوتەرەکەت ڕاستە! ئەگەر کاژێرەکەت هەڵە بوو، %s بە دروستی کار ناکات.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation type="unfinished">تکایە بەشداری بکە ئەگەر %s بەسوودت دۆزیەوە. سەردانی %s بکە بۆ زانیاری زیاتر دەربارەی نەرمواڵەکە.</translation>
</message>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation type="unfinished">پڕە لە خوارەوەی کەمترین %d MiB شێوەبەند کراوە. تکایە ژمارەیەکی بەرزتر بەکاربێنە.</translation>
</message>
<message>
<source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
<translation type="unfinished">پرە: دوایین هاودەمکردنی جزدان لە داتای بەپێز دەچێت. پێویستە دووبارە -ئیندێکس بکەیتەوە (هەموو بەربەستەکە دابەزێنە دووبارە لە حاڵەتی گرێی هەڵکراو)</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation type="unfinished">ئەم هەڵەیە لەوانەیە ڕووبدات ئەگەر ئەم جزدانە بە خاوێنی دانەبەزێنرابێت و دواجار بارکرا بێت بە بەکارهێنانی بنیاتێک بە وەشانێکی نوێتری بێرکلی DB. ئەگەر وایە، تکایە ئەو سۆفتوێرە بەکاربهێنە کە دواجار ئەم جزدانە بارکرا بوو</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation type="unfinished">پێویستە بنکەی زانیارییەکان دروست بکەیتەوە بە بەکارهێنانی -دووبارە ئیندێکس بۆ گەڕانەوە بۆ دۆخی نەپڕاو. ئەمە هەموو بەربەستەکە دائەبەزێنێت</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">مافی چاپ (C) %i-%i</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation type="unfinished">ئاسماپ بدۆزرێتەوە %s نەتوانرا فایلی</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation type="unfinished">هەڵە: کلیلی پوول ڕایکرد، تکایە سەرەتا پەیوەندی بکە بە پڕکردنەوەی کلیل</translation>
</message>
</context>
</TS>

View File

@ -113,9 +113,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(بێ ناونیشان)
</translation>
<translation type="unfinished">(ناونیشان نییە)</translation>
</message>
</context>
<context>
@ -149,12 +147,28 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">او شوله بو ور کرنا کیف پاره گرکه رمزا کیفه وؤ یه پاره بزانی</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished">Kilîda cizdên veke</translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished">Pêborînê biguherîne</translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation type="unfinished">Şîfrekirina cizdên bipejirîne</translation>
</message>
<message>
<source>Are you sure you wish to encrypt your wallet?</source>
<translation type="unfinished">به راستی اون هشیارن کا دخازن بو کیف خو یه پاره رمزه دانین</translation>
</message>
<message>
<source>Wallet encrypted</source>
<translation type="unfinished">Cizdan hate şîfrekirin</translation>
</message>
<message>
<source>Enter the new passphrase for the wallet.&lt;br/&gt;Please use a passphrase of &lt;b&gt;ten or more random characters&lt;/b&gt;, or &lt;b&gt;eight or more words&lt;/b&gt;.</source>
<translation type="unfinished">دەستەواژەی تێپەڕەوی نوێ تێبنووسە بۆ جزدان.1 تکایە دەستەواژەی تێپەڕێک بەکاربێنە لە 2ten یان زیاتر لە هێما هەڕەمەکیەکان2، یان 38 یان زیاتر ووشەکان3.</translation>
<translation type="unfinished">دەستەواژەی تێپەڕەوی نوێ بنووسە بۆ جزدان. &lt;br/&gt;تکایە دەستەواژەی تێپەڕێک بەکاربێنە لە &lt;b&gt;دە یان زیاتر لە هێما هەڕەمەکییەکان&lt;/b&gt;یان &lt;b&gt;هەشت یان وشەی زیاتر&lt;/b&gt;.</translation>
</message>
<message>
<source>Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
@ -215,61 +229,26 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation type="unfinished">تکایە بپشکنە کە بەروار و کاتی کۆمپیوتەرەکەت ڕاستە! ئەگەر کاژێرەکەت هەڵە بوو، %s بە دروستی کار ناکات.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation type="unfinished">تکایە بەشداری بکە ئەگەر %s بەسوودت دۆزیەوە. سەردانی %s بکە بۆ زانیاری زیاتر دەربارەی نەرمواڵەکە.</translation>
</message>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation type="unfinished">پڕە لە خوارەوەی کەمترین %d MiB شێوەبەند کراوە. تکایە ژمارەیەکی بەرزتر بەکاربێنە.</translation>
</message>
<message>
<source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
<translation type="unfinished">پرە: دوایین هاودەمکردنی جزدان لە داتای بەپێز دەچێت. پێویستە دووبارە -ئیندێکس بکەیتەوە (هەموو بەربەستەکە دابەزێنە دووبارە لە حاڵەتی گرێی هەڵکراو)</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation type="unfinished">ئەم هەڵەیە لەوانەیە ڕووبدات ئەگەر ئەم جزدانە بە خاوێنی دانەبەزێنرابێت و دواجار بارکرا بێت بە بەکارهێنانی بنیاتێک بە وەشانێکی نوێتری بێرکلی DB. ئەگەر وایە، تکایە ئەو سۆفتوێرە بەکاربهێنە کە دواجار ئەم جزدانە بارکرا بوو</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation type="unfinished">پێویستە بنکەی زانیارییەکان دروست بکەیتەوە بە بەکارهێنانی -دووبارە ئیندێکس بۆ گەڕانەوە بۆ دۆخی نەپڕاو. ئەمە هەموو بەربەستەکە دائەبەزێنێت</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">مافی چاپ (C) %i-%i</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation type="unfinished">ئاسماپ بدۆزرێتەوە %s نەتوانرا فایلی</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation type="unfinished">هەڵە: کلیلی پوول ڕایکرد، تکایە سەرەتا پەیوەندی بکە بە پڕکردنەوەی کلیل</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;About %1</source>
<translation type="unfinished">&amp;دەربارەی %1</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Cizdan:</translation>
</message>
<message>
<source>&amp;Send</source>
<translation type="unfinished">&amp;ناردن</translation>
</message>
<message>
<source>&amp;File</source>
<translation type="unfinished">&amp;پەرگە</translation>
<translation type="unfinished">&amp;فایل</translation>
</message>
<message>
<source>&amp;Settings</source>
<translation type="unfinished">&amp;سازکارییەکان</translation>
<translation type="unfinished">&amp;ڕێکخستنەکان</translation>
</message>
<message>
<source>&amp;Help</source>
@ -307,7 +286,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<name>UnitDisplayStatusBarControl</name>
<message>
<source>Unit to show amounts in. Click to select another unit.</source>
<translation type="unfinished">یەکە بۆ نیشاندانی بڕی کرتە بکە بۆ دیاریکردنی یەکەیەکی تر.</translation>
<translation type="unfinished">یەکە بۆ نیشاندانی بڕی لەناو. کرتە بکە بۆ دیاریکردنی یەکەیەکی تر.</translation>
</message>
</context>
<context>
@ -338,9 +317,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(بێ ناونیشان)
</translation>
<translation type="unfinished">(ناونیشان نییە)</translation>
</message>
</context>
<context>
@ -630,6 +607,10 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<source>Message:</source>
<translation type="unfinished">پەیام:</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Cizdan:</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
@ -647,9 +628,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(بێ ناونیشان)
</translation>
<translation type="unfinished">(ناونیشان نییە)</translation>
</message>
</context>
<context>
@ -697,9 +676,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(بێ ناونیشان)
</translation>
<translation type="unfinished">(ناونیشان نییە)</translation>
</message>
</context>
<context>
@ -794,9 +771,7 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">(بێ ناونیشان)
</translation>
<translation type="unfinished">(ناونیشان نییە)</translation>
</message>
</context>
<context>
@ -852,4 +827,43 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">ناردنی داتا لە خشتەبەندی ئێستا بۆ فایلێک</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Please check that your computer's date and time are correct! If your clock is wrong, %s will not work properly.</source>
<translation type="unfinished">تکایە بپشکنە کە بەروار و کاتی کۆمپیوتەرەکەت ڕاستە! ئەگەر کاژێرەکەت هەڵە بوو، %s بە دروستی کار ناکات.</translation>
</message>
<message>
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
<translation type="unfinished">تکایە بەشداری بکە ئەگەر %s بەسوودت دۆزیەوە. سەردانی %s بکە بۆ زانیاری زیاتر دەربارەی نەرمواڵەکە.</translation>
</message>
<message>
<source>Prune configured below the minimum of %d MiB. Please use a higher number.</source>
<translation type="unfinished">پڕە لە خوارەوەی کەمترین %d MiB شێوەبەند کراوە. تکایە ژمارەیەکی بەرزتر بەکاربێنە.</translation>
</message>
<message>
<source>Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)</source>
<translation type="unfinished">پرە: دوایین هاودەمکردنی جزدان لە داتای بەپێز دەچێت. پێویستە دووبارە -ئیندێکس بکەیتەوە (هەموو بەربەستەکە دابەزێنە دووبارە لە حاڵەتی گرێی هەڵکراو)</translation>
</message>
<message>
<source>This error could occur if this wallet was not shutdown cleanly and was last loaded using a build with a newer version of Berkeley DB. If so, please use the software that last loaded this wallet</source>
<translation type="unfinished">ئەم هەڵەیە لەوانەیە ڕووبدات ئەگەر ئەم جزدانە بە خاوێنی دانەبەزێنرابێت و دواجار بارکرا بێت بە بەکارهێنانی بنیاتێک بە وەشانێکی نوێتری بێرکلی DB. ئەگەر وایە، تکایە ئەو سۆفتوێرە بەکاربهێنە کە دواجار ئەم جزدانە بارکرا بوو</translation>
</message>
<message>
<source>You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain</source>
<translation type="unfinished">پێویستە بنکەی زانیارییەکان دروست بکەیتەوە بە بەکارهێنانی -دووبارە ئیندێکس بۆ گەڕانەوە بۆ دۆخی نەپڕاو. ئەمە هەموو بەربەستەکە دائەبەزێنێت</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">مافی چاپ (C) %i-%i</translation>
</message>
<message>
<source>Could not find asmap file %s</source>
<translation type="unfinished">ئاسماپ بدۆزرێتەوە %s نەتوانرا فایلی</translation>
</message>
<message>
<source>Error: Keypool ran out, please call keypoolrefill first</source>
<translation type="unfinished">هەڵە: کلیلی پوول ڕایکرد، تکایە سەرەتا پەیوەندی بکە بە پڕکردنەوەی کلیل</translation>
</message>
</context>
</TS>

View File

@ -225,69 +225,6 @@
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Hoc est prae-dimittum experimentala aedes - utere eo periculo tuo proprio - nolite utere fodendo vel applicationibus mercatoriis</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Corruptum databasum frustorum invenitur</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Visne reficere databasum frustorum iam?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Completo lengendi</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Error initiando databasem frustorum</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Error initiando systematem databasi cassidilis %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Error legendo frustorum databasem</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Error aperiendo databasum frustorum</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Non potuisse auscultare in ulla porta. Utere -listen=0 si hoc vis.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Inopia nummorum</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Inopia descriptorum plicarum.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Signandum transactionis abortum est</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Magnitudo transactionis nimis parva</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transactio nimis magna</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Ignotum rete specificatum in -onlynet: '%s'</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -1361,4 +1298,67 @@
<translation type="unfinished">Successum in conservando</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
<translation type="unfinished">Hoc est prae-dimittum experimentala aedes - utere eo periculo tuo proprio - nolite utere fodendo vel applicationibus mercatoriis</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Corruptum databasum frustorum invenitur</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Visne reficere databasum frustorum iam?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Completo lengendi</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Error initiando databasem frustorum</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Error initiando systematem databasi cassidilis %s!</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Error legendo frustorum databasem</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Error aperiendo databasum frustorum</translation>
</message>
<message>
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
<translation type="unfinished">Non potuisse auscultare in ulla porta. Utere -listen=0 si hoc vis.</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Inopia nummorum</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Inopia descriptorum plicarum.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Signandum transactionis abortum est</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Magnitudo transactionis nimis parva</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transactio nimis magna</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">Ignotum rete specificatum in -onlynet: '%s'</translation>
</message>
</context>
</TS>

View File

@ -249,14 +249,6 @@ Pasirašymas galimas tik su 'legacy' tipo adresais.</translation>
<context>
<name>QObject</name>
<message>
<source>Error: Specified data directory "%1" does not exist.</source>
<translation type="unfinished">Klaida: nurodytas duomenų katalogas %1 neegzistuoja.</translation>
</message>
<message>
<source>Error: Cannot parse configuration file: %1.</source>
<translation type="unfinished">Klaida: Negalima analizuoti konfigūracijos failo: %1.</translation>
</message>
<message>
<source>Error: %1</source>
<translation type="unfinished">Klaida: %1</translation>
</message>
@ -277,10 +269,6 @@ Pasirašymas galimas tik su 'legacy' tipo adresais.</translation>
<translation type="unfinished">Įveskite Bitcoin adresą (pvz., %1)</translation>
</message>
<message>
<source>Internal</source>
<translation type="unfinished">Vidinis</translation>
</message>
<message>
<source>Inbound</source>
<extracomment>An inbound connection from a peer. An inbound connection is a connection initiated by a peer.</extracomment>
<translation type="unfinished">Gaunamas</translation>
@ -357,161 +345,6 @@ Pasirašymas galimas tik su 'legacy' tipo adresais.</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Nustatymų failas negalėjo būti perskaitytas</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Nustatymų failas negalėjo būti parašytas</translation>
</message>
<message>
<source>The %s developers</source>
<translation type="unfinished">%s kūrėjai</translation>
</message>
<message>
<source>%s is set very high!</source>
<translation type="unfinished">%s labai aukštas!</translation>
</message>
<message>
<source>-maxmempool must be at least %d MB</source>
<translation type="unfinished">-maxmempool turi būti bent %d MB</translation>
</message>
<message>
<source>Cannot resolve -%s address: '%s'</source>
<translation type="unfinished">Negalima išspręsti -%s adreso: %s</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished">%s konfigūravimo nustatymas taikomas tik %s tinkle, kai yra [%s] skiltyje.</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">Autorių teisės (C) %i-%i</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Nustatyta sugadinta blokų duomenų bazė</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ar norite dabar atstatyti blokų duomenų bazę?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Įkėlimas baigtas</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Klaida inicijuojant blokų duomenų bazę</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Klaida inicijuojant piniginės duomenų bazės aplinką %s!</translation>
</message>
<message>
<source>Error loading %s</source>
<translation type="unfinished">Klaida įkeliant %s</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation type="unfinished">Klaida įkeliant %s: Privatūs raktai gali būti išjungti tik kūrimo metu</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation type="unfinished">Klaida įkeliant %s: Piniginės failas pažeistas</translation>
</message>
<message>
<source>Error loading %s: Wallet requires newer version of %s</source>
<translation type="unfinished">Klaida įkeliant %s: Piniginei reikia naujesnės%s versijos</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Klaida įkeliant blokų duombazę</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Klaida atveriant blokų duombazę</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Nepakanka lėšų</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Nėra pakankamai failų aprašų.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Transakcijos pasirašymas nepavyko</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Šaltinio kodas pasiekiamas %s.</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Piniginė vengs mokėti mažiau nei minimalus perdavimo mokestį.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Tai eksperimentinė programinė įranga.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Tai yra minimalus transakcijos mokestis, kurį jūs mokate kiekvieną transakciją.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Tai yra sandorio mokestis, kurį mokėsite, jei siunčiate sandorį.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Transakcijos suma per maža</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Transakcijos suma negali buti neigiama</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation type="unfinished">Sandoris turi per ilgą mempool grandinę</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Transakcija privalo turėti bent vieną gavėją</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Sandoris yra per didelis</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">Nepavyko generuoti pradinių raktų</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished">Nepavyko generuoti raktų</translation>
</message>
<message>
<source>Unable to open %s for writing</source>
<translation type="unfinished">Nepavyko atidaryti %s rašymui</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation type="unfinished">Nežinomas adreso tipas '%s'</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Tikrinami blokai...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Tikrinama piniginė(s)...</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -1642,10 +1475,6 @@ Pasirašymas galimas tik su 'legacy' tipo adresais.</translation>
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished">Dialogas</translation>
</message>
<message>
<source>Save</source>
<translation type="unfinished">Išsaugoti...</translation>
</message>
@ -3057,4 +2886,159 @@ Pasirašymas galimas tik su 'legacy' tipo adresais.</translation>
<translation type="unfinished">Atšaukti</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>The %s developers</source>
<translation type="unfinished">%s kūrėjai</translation>
</message>
<message>
<source>%s is set very high!</source>
<translation type="unfinished">%s labai aukštas!</translation>
</message>
<message>
<source>-maxmempool must be at least %d MB</source>
<translation type="unfinished">-maxmempool turi būti bent %d MB</translation>
</message>
<message>
<source>Cannot resolve -%s address: '%s'</source>
<translation type="unfinished">Negalima išspręsti -%s adreso: %s</translation>
</message>
<message>
<source>Config setting for %s only applied on %s network when in [%s] section.</source>
<translation type="unfinished">%s konfigūravimo nustatymas taikomas tik %s tinkle, kai yra [%s] skiltyje.</translation>
</message>
<message>
<source>Copyright (C) %i-%i</source>
<translation type="unfinished">Autorių teisės (C) %i-%i</translation>
</message>
<message>
<source>Corrupted block database detected</source>
<translation type="unfinished">Nustatyta sugadinta blokų duomenų bazė</translation>
</message>
<message>
<source>Do you want to rebuild the block database now?</source>
<translation type="unfinished">Ar norite dabar atstatyti blokų duomenų bazę?</translation>
</message>
<message>
<source>Done loading</source>
<translation type="unfinished">Įkėlimas baigtas</translation>
</message>
<message>
<source>Error initializing block database</source>
<translation type="unfinished">Klaida inicijuojant blokų duomenų bazę</translation>
</message>
<message>
<source>Error initializing wallet database environment %s!</source>
<translation type="unfinished">Klaida inicijuojant piniginės duomenų bazės aplinką %s!</translation>
</message>
<message>
<source>Error loading %s</source>
<translation type="unfinished">Klaida įkeliant %s</translation>
</message>
<message>
<source>Error loading %s: Private keys can only be disabled during creation</source>
<translation type="unfinished">Klaida įkeliant %s: Privatūs raktai gali būti išjungti tik kūrimo metu</translation>
</message>
<message>
<source>Error loading %s: Wallet corrupted</source>
<translation type="unfinished">Klaida įkeliant %s: Piniginės failas pažeistas</translation>
</message>
<message>
<source>Error loading %s: Wallet requires newer version of %s</source>
<translation type="unfinished">Klaida įkeliant %s: Piniginei reikia naujesnės%s versijos</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Klaida įkeliant blokų duombazę</translation>
</message>
<message>
<source>Error opening block database</source>
<translation type="unfinished">Klaida atveriant blokų duombazę</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Nepakanka lėšų</translation>
</message>
<message>
<source>Not enough file descriptors available.</source>
<translation type="unfinished">Nėra pakankamai failų aprašų.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Transakcijos pasirašymas nepavyko</translation>
</message>
<message>
<source>The source code is available from %s.</source>
<translation type="unfinished">Šaltinio kodas pasiekiamas %s.</translation>
</message>
<message>
<source>The wallet will avoid paying less than the minimum relay fee.</source>
<translation type="unfinished">Piniginė vengs mokėti mažiau nei minimalus perdavimo mokestį.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished">Tai eksperimentinė programinė įranga.</translation>
</message>
<message>
<source>This is the minimum transaction fee you pay on every transaction.</source>
<translation type="unfinished">Tai yra minimalus transakcijos mokestis, kurį jūs mokate kiekvieną transakciją.</translation>
</message>
<message>
<source>This is the transaction fee you will pay if you send a transaction.</source>
<translation type="unfinished">Tai yra sandorio mokestis, kurį mokėsite, jei siunčiate sandorį.</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Transakcijos suma per maža</translation>
</message>
<message>
<source>Transaction amounts must not be negative</source>
<translation type="unfinished">Transakcijos suma negali buti neigiama</translation>
</message>
<message>
<source>Transaction has too long of a mempool chain</source>
<translation type="unfinished">Sandoris turi per ilgą mempool grandinę</translation>
</message>
<message>
<source>Transaction must have at least one recipient</source>
<translation type="unfinished">Transakcija privalo turėti bent vieną gavėją</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Sandoris yra per didelis</translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">Nepavyko generuoti pradinių raktų</translation>
</message>
<message>
<source>Unable to generate keys</source>
<translation type="unfinished">Nepavyko generuoti raktų</translation>
</message>
<message>
<source>Unable to open %s for writing</source>
<translation type="unfinished">Nepavyko atidaryti %s rašymui</translation>
</message>
<message>
<source>Unknown address type '%s'</source>
<translation type="unfinished">Nežinomas adreso tipas '%s'</translation>
</message>
<message>
<source>Verifying blocks</source>
<translation type="unfinished">Tikrinami blokai...</translation>
</message>
<message>
<source>Verifying wallet(s)</source>
<translation type="unfinished">Tikrinama piniginė(s)...</translation>
</message>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">Nustatymų failas negalėjo būti perskaitytas</translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">Nustatymų failas negalėjo būti parašytas</translation>
</message>
</context>
</TS>

View File

@ -265,37 +265,6 @@
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Done loading</source>
<translation type="unfinished">Ielāde pabeigta</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Kļūda ielādējot bloku datubāzi</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Nepietiek bitkoinu</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Transakcijas parakstīšana neizdevās</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Transakcijas summa ir pārāk maza</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakcija ir pārāk liela</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">-onlynet komandā norādīts nepazīstams tīkls: '%s'</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -326,10 +295,6 @@
<translation type="unfinished">&amp;Par %1</translation>
</message>
<message>
<source>Show information about %1</source>
<translation type="unfinished">Rādīt informāciju par %1</translation>
</message>
<message>
<source>About &amp;Qt</source>
<translation type="unfinished">Par &amp;Qt</translation>
</message>
@ -855,10 +820,6 @@
<context>
<name>PSBTOperationsDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished">Dialogs</translation>
</message>
<message>
<source>Copy to Clipboard</source>
<translation type="unfinished">Nokopēt</translation>
</message>
@ -1326,4 +1287,35 @@
<translation type="unfinished">Datus no tekošā ieliktņa eksportēt uz failu</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Done loading</source>
<translation type="unfinished">Ielāde pabeigta</translation>
</message>
<message>
<source>Error loading block database</source>
<translation type="unfinished">Kļūda ielādējot bloku datubāzi</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Nepietiek bitkoinu</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished">Transakcijas parakstīšana neizdevās</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished">Transakcijas summa ir pārāk maza</translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished">Transakcija ir pārāk liela</translation>
</message>
<message>
<source>Unknown network specified in -onlynet: '%s'</source>
<translation type="unfinished">-onlynet komandā norādīts nepazīstams tīkls: '%s'</translation>
</message>
</context>
</TS>

444
src/qt/locale/bitcoin_mg.ts Normal file
View File

@ -0,0 +1,444 @@
<TS version="2.1" language="mg">
<context>
<name>AddressBookPage</name>
<message>
<source>Create a new address</source>
<translation type="unfinished">Mamorona adiresy vaovao</translation>
</message>
<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;Vaovao</translation>
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;Adikao</translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished">Fafao ao anaty lisitra ny adiresy voamarika</translation>
</message>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;Avoahy</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp;Fafao</translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished">Fidio ny adiresy handefasana vola</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation type="unfinished">Fidio ny adiresy handraisana vola</translation>
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished">Adiresy fandefasana</translation>
</message>
<message>
<source>Receiving addresses</source>
<translation type="unfinished">Adiresy fandraisana</translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation type="unfinished">Ireto ny adiresy Bitcoin natokana handefasanao vola. Hamarino hatrany ny tarehimarika sy ny adiresy handefasana alohan'ny handefa vola.</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp;Adikao ny Adiresy</translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Address</source>
<translation type="unfinished">Adiresy</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Enter passphrase</source>
<translation type="unfinished">Ampidiro ny tenimiafina</translation>
</message>
<message>
<source>New passphrase</source>
<translation type="unfinished">Tenimiafina vaovao</translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation type="unfinished">Avereno ny tenimiafina vaovao</translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished">Asehoy ny tenimiafina</translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished">Ovay ny tenimiafina</translation>
</message>
</context>
<context>
<name>QObject</name>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>Create a new wallet</source>
<translation type="unfinished">Hamorona kitapom-bola vaovao</translation>
</message>
<message>
<source>Wallet:</source>
<translation type="unfinished">Kitapom-bola:</translation>
</message>
<message>
<source>&amp;Send</source>
<translation type="unfinished">&amp;Handefa</translation>
</message>
<message>
<source>&amp;Receive</source>
<translation type="unfinished">&amp;Handray</translation>
</message>
<message>
<source>&amp;Change Passphrase</source>
<translation type="unfinished">&amp;Ovay ny Tenimiafina...</translation>
</message>
<message>
<source>Sign &amp;message</source>
<translation type="unfinished">Soniavo &amp;hafatra...</translation>
</message>
<message>
<source>&amp;Verify message</source>
<translation type="unfinished">&amp;Hamarino hafatra...</translation>
</message>
<message>
<source>Close Wallet</source>
<translation type="unfinished">Akatony ny Kitapom-bola...</translation>
</message>
<message>
<source>Create Wallet</source>
<translation type="unfinished">Hamorona Kitapom-bola...</translation>
</message>
<message>
<source>Close All Wallets</source>
<translation type="unfinished">Akatony ny Kitapom-bola Rehetra</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fahadisoana</translation>
</message>
<message>
<source>Warning</source>
<translation type="unfinished">Fampitandremana</translation>
</message>
<message>
<source>Information</source>
<translation type="unfinished">Tsara ho fantatra</translation>
</message>
<message>
<source>&amp;Sending addresses</source>
<translation type="unfinished">&amp;Adiresy fandefasana</translation>
</message>
<message>
<source>&amp;Receiving addresses</source>
<translation type="unfinished">&amp;Adiresy fandraisana</translation>
</message>
<message>
<source>Wallet Name</source>
<extracomment>Label of the input field where the name of the wallet is entered.</extracomment>
<translation type="unfinished">Anaran'ny Kitapom-bola</translation>
</message>
<message>
<source>Zoom</source>
<translation type="unfinished">Hangezao</translation>
</message>
<message>
<source>&amp;Hide</source>
<translation type="unfinished">&amp;Afeno</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>Date</source>
<translation type="unfinished">Daty</translation>
</message>
<message>
<source>Confirmations</source>
<translation type="unfinished">Fanamarinana</translation>
</message>
<message>
<source>Confirmed</source>
<translation type="unfinished">Voamarina</translation>
</message>
<message>
<source>&amp;Copy address</source>
<translation type="unfinished">&amp;Adikao ny adiresy</translation>
</message>
<message>
<source>yes</source>
<translation type="unfinished">eny</translation>
</message>
<message>
<source>no</source>
<translation type="unfinished">tsia</translation>
</message>
</context>
<context>
<name>CreateWalletActivity</name>
<message>
<source>Create Wallet</source>
<extracomment>Title of window indicating the progress of creation of a new wallet.</extracomment>
<translation type="unfinished">Hamorona Kitapom-bola</translation>
</message>
</context>
<context>
<name>CreateWalletDialog</name>
<message>
<source>Create Wallet</source>
<translation type="unfinished">Hamorona Kitapom-bola</translation>
</message>
<message>
<source>Wallet Name</source>
<translation type="unfinished">Anaran'ny Kitapom-bola</translation>
</message>
<message>
<source>Wallet</source>
<translation type="unfinished">Kitapom-bola</translation>
</message>
<message>
<source>Create</source>
<translation type="unfinished">Mamorona</translation>
</message>
</context>
<context>
<name>EditAddressDialog</name>
<message>
<source>Edit Address</source>
<translation type="unfinished">Hanova Adiresy</translation>
</message>
<message>
<source>&amp;Address</source>
<translation type="unfinished">&amp;Adiresy</translation>
</message>
<message>
<source>New sending address</source>
<translation type="unfinished">Adiresy fandefasana vaovao</translation>
</message>
<message>
<source>Edit receiving address</source>
<translation type="unfinished">Hanova adiresy fandraisana</translation>
</message>
<message>
<source>Edit sending address</source>
<translation type="unfinished">Hanova adiresy fandefasana</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fahadisoana</translation>
</message>
</context>
<context>
<name>OptionsDialog</name>
<message>
<source>Error</source>
<translation type="unfinished">Fahadisoana</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished">Adiresy</translation>
</message>
</context>
<context>
<name>RPCConsole</name>
<message>
<source>&amp;Copy address</source>
<extracomment>Context menu action to copy the address of a peer.</extracomment>
<translation type="unfinished">&amp;Adikao ny adiresy</translation>
</message>
</context>
<context>
<name>ReceiveCoinsDialog</name>
<message>
<source>&amp;Copy address</source>
<translation type="unfinished">&amp;Adikao ny adiresy</translation>
</message>
</context>
<context>
<name>ReceiveRequestDialog</name>
<message>
<source>Wallet:</source>
<translation type="unfinished">Kitapom-bola:</translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Date</source>
<translation type="unfinished">Daty</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message>
<source>Date</source>
<translation type="unfinished">Daty</translation>
</message>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Date</source>
<translation type="unfinished">Daty</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>&amp;Copy address</source>
<translation type="unfinished">&amp;Adikao ny adiresy</translation>
</message>
<message>
<source>Confirmed</source>
<translation type="unfinished">Voamarina</translation>
</message>
<message>
<source>Date</source>
<translation type="unfinished">Daty</translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished">Adiresy</translation>
</message>
</context>
<context>
<name>WalletFrame</name>
<message>
<source>Create a new wallet</source>
<translation type="unfinished">Hamorona kitapom-bola vaovao</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fahadisoana</translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;Avoahy</translation>
</message>
</context>
</TS>

View File

@ -303,101 +303,6 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>-maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
<translation type="unfinished">-maxtxfee ! ി ി .</translation>
</message>
<message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation type="unfinished">ി ി ി ി ി .</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation type="unfinished">ി ി ിി ി, ിി.</translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation type="unfinished">Error: %s ി </translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation type="unfinished"> ി ി ി: '%s'</translation>
</message>
<message>
<source>Invalid -proxy address or hostname: '%s'</source>
<translation type="unfinished"> -ി ി ി : '%s'</translation>
</message>
<message>
<source>Invalid amount for -paytxfee=&lt;amount&gt;: '%s' (must be at least %s)</source>
<translation type="unfinished"> -paytxfee=&lt;amount&gt; :'%s' ( %s ി ിി )</translation>
</message>
<message>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation type="unfinished">-whitelist: '%s' ിിി netmask  </translation>
</message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation type="unfinished">-whitebind: '%s' ി ിി </translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation type="unfinished">ിി ിിി -maxconnections %d ി %d ി .</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation type="unfinished">Section [%s] ിിിി.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished"> .</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation type="unfinished">ിി -walletdir "%s" ിി </translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation type="unfinished">ിി -walletdir "%s" ി </translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation type="unfinished">ിി -walletdir "%s" ി </translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished"> ി ി ിി.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished"> ിിി .</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished"> ി %s ിി ( ിി ി %s )</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">PID '%s': %s ിി ിി </translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">ി ിി ിി</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">-blockfilterindex %s ി ിി.</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Overview</source>
@ -1036,6 +941,13 @@ Signing is only possible with addresses of the type 'legacy'.</source>
</message>
</context>
<context>
<name>ShutdownWindow</name>
<message>
<source>%1 is shutting down</source>
<translation type="unfinished">%1 ി...</translation>
</message>
</context>
<context>
<name>ModalOverlay</name>
<message>
<source>Form</source>
@ -1376,4 +1288,91 @@ Signing is only possible with addresses of the type 'legacy'.</source>
<translation type="unfinished">ിി ി ി ി </translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
<translation type="unfinished">ി ി ി ി ി .</translation>
</message>
<message>
<source>Error reading from database, shutting down.</source>
<translation type="unfinished">ി ി ിി ി, ിി.</translation>
</message>
<message>
<source>Error: Disk space is low for %s</source>
<translation type="unfinished">Error: %s ി </translation>
</message>
<message>
<source>Invalid -onion address or hostname: '%s'</source>
<translation type="unfinished"> ി ി ി: '%s'</translation>
</message>
<message>
<source>Invalid -proxy address or hostname: '%s'</source>
<translation type="unfinished"> -ി ി ി : '%s'</translation>
</message>
<message>
<source>Invalid netmask specified in -whitelist: '%s'</source>
<translation type="unfinished">-whitelist: '%s' ിിി netmask  </translation>
</message>
<message>
<source>Need to specify a port with -whitebind: '%s'</source>
<translation type="unfinished">-whitebind: '%s' ി ിി </translation>
</message>
<message>
<source>Reducing -maxconnections from %d to %d, because of system limitations.</source>
<translation type="unfinished">ിി ിിി -maxconnections %d ി %d ി .</translation>
</message>
<message>
<source>Section [%s] is not recognized.</source>
<translation type="unfinished">Section [%s] ിിിി.</translation>
</message>
<message>
<source>Signing transaction failed</source>
<translation type="unfinished"> .</translation>
</message>
<message>
<source>Specified -walletdir "%s" does not exist</source>
<translation type="unfinished">ിി -walletdir "%s" ിി </translation>
</message>
<message>
<source>Specified -walletdir "%s" is a relative path</source>
<translation type="unfinished">ിി -walletdir "%s" ി </translation>
</message>
<message>
<source>Specified -walletdir "%s" is not a directory</source>
<translation type="unfinished">ിി -walletdir "%s" ി </translation>
</message>
<message>
<source>The transaction amount is too small to pay the fee</source>
<translation type="unfinished"> ി ി ിി.</translation>
</message>
<message>
<source>This is experimental software.</source>
<translation type="unfinished"> ിിി .</translation>
</message>
<message>
<source>Transaction amount too small</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Transaction too large</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
<translation type="unfinished"> ി %s ിി ( ിി ി %s )</translation>
</message>
<message>
<source>Unable to create the PID file '%s': %s</source>
<translation type="unfinished">PID '%s': %s ിി ിി </translation>
</message>
<message>
<source>Unable to generate initial keys</source>
<translation type="unfinished">ി ിി ിി</translation>
</message>
<message>
<source>Unknown -blockfilterindex value %s.</source>
<translation type="unfinished">-blockfilterindex %s ി ിി.</translation>
</message>
</context>
</TS>

View File

@ -233,17 +233,6 @@
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Done loading</source>
<translation type="unfinished">Ачааллаж дууслаа</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Таны дансны үлдэгдэл хүрэлцэхгүй байна</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Transactions</source>
@ -361,7 +350,7 @@
<message>
<source>Date: %1
</source>
<translation type="unfinished">Огноо%1
<translation type="unfinished">Огноо:%1
</translation>
</message>
<message>
@ -1115,4 +1104,15 @@
<translation type="unfinished">Сонгогдсон таб дээрхи дата-г экспортлох</translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Done loading</source>
<translation type="unfinished">Ачааллаж дууслаа</translation>
</message>
<message>
<source>Insufficient funds</source>
<translation type="unfinished">Таны дансны үлдэгдэл хүрэлцэхгүй байна</translation>
</message>
</context>
</TS>

435
src/qt/locale/bitcoin_mr.ts Normal file
View File

@ -0,0 +1,435 @@
<TS version="2.1" language="mr">
<context>
<name>AddressBookPage</name>
<message>
<source>Right-click to edit address or label</source>
<translation type="unfinished"> ि ि ि .</translation>
</message>
<message>
<source>Create a new address</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Copy the currently selected address to the system clipboard</source>
<translation type="unfinished"> ि ि ि </translation>
</message>
<message>
<source>&amp;Copy</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>C&amp;lose</source>
<translation type="unfinished">&amp; </translation>
</message>
<message>
<source>Delete the currently selected address from the list</source>
<translation type="unfinished"> ि </translation>
</message>
<message>
<source>Enter address or label to search</source>
<translation type="unfinished"> ि </translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>&amp;Delete</source>
<translation type="unfinished">&amp; </translation>
</message>
<message>
<source>Choose the address to send coins to</source>
<translation type="unfinished"> ि</translation>
</message>
<message>
<source>Choose the address to receive coins with</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>C&amp;hoose</source>
<translation type="unfinished">&amp;ि</translation>
</message>
<message>
<source>Sending addresses</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Receiving addresses</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
<translation type="unfinished"> ि ि . ि ि .</translation>
</message>
<message>
<source>&amp;Copy Address</source>
<translation type="unfinished">&amp; </translation>
</message>
<message>
<source>Copy &amp;Label</source>
<translation type="unfinished">ि </translation>
</message>
<message>
<source>&amp;Edit</source>
<translation type="unfinished">&amp;ि</translation>
</message>
<message>
<source>Export Address List</source>
<translation type="unfinished"> ि </translation>
</message>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>There was an error trying to save the address list to %1. Please try again.</source>
<extracomment>An error message. %1 is a stand-in argument for the name of the file we attempted to save to.</extracomment>
<translation type="unfinished"> . .%1</translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">ि </translation>
</message>
</context>
<context>
<name>AddressTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">( )</translation>
</message>
</context>
<context>
<name>AskPassphraseDialog</name>
<message>
<source>Passphrase Dialog</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Enter passphrase</source>
<translation type="unfinished"> ि </translation>
</message>
<message>
<source>New passphrase</source>
<translation type="unfinished">  </translation>
</message>
<message>
<source>Repeat new passphrase</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Show passphrase</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Encrypt wallet</source>
<translation type="unfinished"> ि </translation>
</message>
<message>
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
<translation type="unfinished"> .</translation>
</message>
<message>
<source>Unlock wallet</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Change passphrase</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Confirm wallet encryption</source>
<translation type="unfinished"> ि
 </translation>
</message>
</context>
<context>
<name>BitcoinApplication</name>
<message>
<source>A fatal error occurred. %1 can no longer continue safely and will quit.</source>
<translation type="unfinished"> . %1 ि ि .</translation>
</message>
<message>
<source>Internal error</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>%1 didn't yet exit safely</source>
<translation type="unfinished">%1 ि ...</translation>
</message>
<message numerus="yes">
<source>%n second(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n minute(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n hour(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n day(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n year(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>BitcoinGUI</name>
<message>
<source>&amp;Minimize</source>
<translation type="unfinished">&amp;ि</translation>
</message>
<message>
<source>&amp;Options</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>&amp;Encrypt Wallet</source>
<translation type="unfinished">&amp;ि </translation>
</message>
<message>
<source>&amp;Backup Wallet</source>
<translation type="unfinished">&amp; ...</translation>
</message>
<message>
<source>&amp;Change Passphrase</source>
<translation type="unfinished">&amp; ...</translation>
</message>
<message>
<source>Sign &amp;message</source>
<translation type="unfinished"> ि ...</translation>
</message>
<message>
<source>&amp;Verify message</source>
<translation type="unfinished">&amp; ि ...</translation>
</message>
<message>
<source>&amp;Load PSBT from file</source>
<translation type="unfinished"> PSBT &amp; ...</translation>
</message>
<message>
<source>Close Wallet</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Create Wallet</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Close All Wallets</source>
<translation type="unfinished"> ...</translation>
</message>
<message>
<source>Syncing Headers (%1%)</source>
<translation type="unfinished"> ि (%1%)</translation>
</message>
<message>
<source>Synchronizing with network</source>
<translation type="unfinished"> ि ...</translation>
</message>
<message>
<source>Indexing blocks on disk</source>
<translation type="unfinished">ि ि ...</translation>
</message>
<message>
<source>Processing blocks on disk</source>
<translation type="unfinished">ि ि ...</translation>
</message>
<message numerus="yes">
<source>Processed %n block(s) of transaction history.</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>%n active connection(s) to Bitcoin network.</source>
<extracomment>A substring of the tooltip.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>CoinControlDialog</name>
<message>
<source>(no label)</source>
<translation type="unfinished">( )</translation>
</message>
</context>
<context>
<name>Intro</name>
<message numerus="yes">
<source>%n GB of space available</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message numerus="yes">
<source>(of %n GB needed)</source>
<translation type="unfinished">
<numerusform>(of %n GB needed)</numerusform>
<numerusform>(of %n GB needed)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%n GB needed for full chain)</source>
<translation type="unfinished">
<numerusform>(%n GB needed for full chain)</numerusform>
<numerusform>(%n GB needed for full chain)</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(sufficient to restore backups %n day(s) old)</source>
<extracomment>Explanatory text on the capability of the current prune target.</extracomment>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>PeerTableModel</name>
<message>
<source>Address</source>
<extracomment>Title of Peers Table column which contains the IP/Onion/I2P address of the connected peer.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RecentRequestsTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">( )</translation>
</message>
</context>
<context>
<name>SendCoinsDialog</name>
<message numerus="yes">
<source>Estimated to begin confirmation within %n block(s).</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">( )</translation>
</message>
</context>
<context>
<name>TransactionDesc</name>
<message numerus="yes">
<source>matures in %n more block(s)</source>
<translation type="unfinished">
<numerusform />
<numerusform />
</translation>
</message>
</context>
<context>
<name>TransactionTableModel</name>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>(no label)</source>
<translation type="unfinished">( )</translation>
</message>
</context>
<context>
<name>TransactionView</name>
<message>
<source>Comma separated file</source>
<extracomment>Expanded name of the CSV file format. See: https://en.wikipedia.org/wiki/Comma-separated_values.</extracomment>
<translation type="unfinished"> </translation>
</message>
<message>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exporting Failed</source>
<translation type="unfinished">ि </translation>
</message>
</context>
<context>
<name>WalletView</name>
<message>
<source>&amp;Export</source>
<translation type="unfinished">&amp;</translation>
</message>
<message>
<source>Export the data in the current tab to a file</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>bitcoin-core</name>
<message>
<source>Settings file could not be read</source>
<translation type="unfinished">ि </translation>
</message>
<message>
<source>Settings file could not be written</source>
<translation type="unfinished">ि िि </translation>
</message>
</context>
</TS>

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