Commit graph

37338 commits

Author SHA1 Message Date
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