Commit Graph

41017 Commits

Author SHA1 Message Date
merge-script ae2658caac
Merge bitcoin/bitcoin#30097: crypto: disable asan for sha256_sse4 with clang and -O0
141df0a288 crypto: disable asan for sha256_sse4 with clang and -O0 (Cory Fields)

Pull request description:

  Clang is unable to compile the Transform function for that combination of options.

  Fixes #29801.

ACKs for top commit:
  achow101:
    ACK 141df0a288

Tree-SHA512: d74fdac5840ad7524edfde069fb43ae75c31146e90ecc58bbc7912ff57a02b068547431b1766afeed782272c0b93b0b41a286c1cf26ec55ce332d94ce917d810
2024-05-16 08:40:34 +08:00
Ava Chow 71f0f2273f
Merge bitcoin/bitcoin#28929: serialization: Support for multiple parameters
8d491ae9ec serialization: Add ParamsStream GetStream() method (Ryan Ofsky)
951203bcc4 net: Simplify ParamsStream usage (Ryan Ofsky)
e6794e475c serialization: Accept multiple parameters in ParamsStream constructor (Ryan Ofsky)
cb28849a88 serialization: Reverse ParamsStream constructor order (Ryan Ofsky)
83436d14f0 serialization: Drop unnecessary ParamsStream references (Ryan Ofsky)
84502b755b serialization: Drop references to GetVersion/GetType (Ryan Ofsky)
f3a2b52376 serialization: Support for multiple parameters (Ryan Ofsky)

Pull request description:

  Currently it is only possible to attach one serialization parameter to a stream at a time. For example, it is not possible to set a parameter controlling the transaction format and a parameter controlling the address format at the same time because one parameter will override the other.

  This limitation is inconvenient for multiprocess code since it is not possible to create just one type of stream and serialize any object to it. Instead it is necessary to create different streams for different object types, which requires extra boilerplate and makes using the new parameter fields a lot more awkward than the older version and type fields.

  Fix this problem by allowing an unlimited number of serialization stream parameters to be set, and allowing them to be requested by type. Later parameters will still override earlier parameters, but only if they have the same type.

  For an example of different ways multiple parameters can be set, see the new [`with_params_multi`](40f505583f/src/test/serialize_tests.cpp (L394-L410)) unit test.

  This change requires replacing the `stream.GetParams()` method with a `stream.GetParams<T>()` method in order for serialization code to retrieve the desired parameters. The change is more verbose, but probably a good thing for readability because previously it could be difficult to know what type the `GetParams()` method would return, and now it is more obvious.

  ---

  This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722).

ACKs for top commit:
  maflcko:
    ACK 8d491ae9ec 🔵
  sipa:
    utACK 8d491ae9ec
  TheCharlatan:
    ACK 8d491ae9ec

Tree-SHA512: 40b7041ee01c0372b1f86f7fd6f3b6af56ef24a6383f91ffcedd04d388e63407006457bf7ed056b0e37b4dec9ffd5ca006cb8192e488ea2c64678567e38d4647
2024-05-15 15:09:56 -04:00
merge-script 7a40f2a3f1
Merge bitcoin-core/gui#722: wallet: Allow user to navigate options while encrypting at creation
cccddc03f0 Wallet encrypt on create, allow to navigate options (Hernan Marino)

Pull request description:

  This fixes https://github.com/bitcoin-core/gui/issues/394.
  It adds a  "Go back" button to the "Confirm wallet encryption" window, allowing the users to change the password if they want to. It also adds a Cancel button to the "Wallet to be encrypted" window.
  Prior to this change users had no option to alter the password, and were forced to either go ahead with wallet creation or cancel the whole process. Also, at the final window, they were shown a warning but with no option to cancel.
  The new workflow for wallet encryption and creation is similar to the following:

  ![videoNavigation](https://user-images.githubusercontent.com/87907936/225705434-22d3c678-fa01-4079-ba10-ca5a0e8d3922.gif)

ACKs for top commit:
  alfonsoromanz:
    Re-Tested ACK cccddc03f0
  BrandonOdiwuor:
    re-Tested ACK cccddc03f0
  hebasto:
    ACK cccddc03f0, tested on Ubuntu 24.04.

Tree-SHA512: d2856d75f75acbd7d51ede62b4abd317f6ed6a9b890fe0b73b63b921b4b3d61b49477e35dc74466a056a9e8c0c1598df7601111d36c57ef18fdfdf0b18f503e6
2024-05-15 18:41:15 +01:00
Ryan Ofsky 33303b2b29
Merge bitcoin/bitcoin#30000: p2p: index TxOrphanage by wtxid, allow entries with same txid
0fb17bf61a [log] updates in TxOrphanage (glozow)
b16da7eda7 [functional test] attackers sending mutated orphans (glozow)
6675f6428d [unit test] TxOrphanage handling of same-txid-different-witness txns (glozow)
8923edfc1f [p2p] allow entries with the same txid in TxOrphanage (glozow)
c31f148166 [refactor] TxOrphanage::EraseTx by wtxid (glozow)
efcc593017 [refactor] TxOrphanage::HaveTx only by wtxid (glozow)
7e475b9648 [p2p] don't query orphanage by txid (glozow)

Pull request description:

  Part of #27463 in the "make orphan handling more robust" section.

  Currently the main map in `TxOrphanage` is indexed by txid; we do not allow 2 transactions with the same txid into TxOrphanage. This means that if we receive a transaction and want to store it in orphanage, we'll fail to do so if a same-txid-different-witness version of the tx already exists in the orphanage. The existing orphanage entry can stay until it expires 20 minutes later, or until we find that it is invalid.

  This means an attacker can try to block/delay us accepting an orphan transaction by sending a mutated version of the child ahead of time. See included test.

  Prior to #28970, we don't rely on the orphanage for anything and it would be relatively difficult to guess what transaction will go to a node's orphanage. After the parent(s) are accepted, if anybody sends us the correct transaction, we'll end up accepting it. However, this is a bit more painful for 1p1c: it's easier for an attacker to tell when a tx is going to hit a node's orphanage, and we need to store the correct orphan + receive the parent before we'll consider the package. If we start out with a bad orphan, we can't evict it until we receive the parent + try the 1p1c, and then we'll need to download the real child, put it in orphanage, download the parent again, and then retry 1p1c.

ACKs for top commit:
  AngusP:
    ACK 0fb17bf61a
  itornaza:
    trACK 0fb17bf61a
  instagibbs:
    ACK 0fb17bf61a
  theStack:
    ACK 0fb17bf61a
  sr-gi:
    crACK [0fb17bf](0fb17bf61a)
  stickies-v:
    ACK 0fb17bf61a

Tree-SHA512: edcbac7287c628bc27036920c2d4e4f63ec65087fbac1de9319c4f541515d669fc4e5fdc30c8b9a248b720da42b89153d388e91c7bf5caf4bc5b3b931ded1f59
2024-05-15 09:56:17 -04:00
Cory Fields 141df0a288 crypto: disable asan for sha256_sse4 with clang and -O0
Clang is unable to compile the Transform function for that combination of
options.
2024-05-15 13:50:25 +00:00
merge-script 42d5a1ff25
Merge bitcoin/bitcoin#30060: ci: Roll clang in test-each-commit task
fa90ad23c0 ci: Roll test-each-commit Ubuntu (MarcoFalke)
fa6c82dd9b ci: Remove clang version pin in test-each-commit (MarcoFalke)

Pull request description:

  Needed for https://github.com/bitcoin/bitcoin/pull/29077#issuecomment-2099704210

ACKs for top commit:
  hebasto:
    re-ACK fa90ad23c0.

Tree-SHA512: 753a3a77d967f308b5b5dd0bc7ea9f3268fc93c5ac978da3d79b85461cb1e994c6ac481888dc472b9a08be45ad0fad66ad3fda241a8955f999b7c2cb2a2b1f58
2024-05-15 16:31:27 +08:00
MarcoFalke fa90ad23c0
ci: Roll test-each-commit Ubuntu 2024-05-15 09:53:04 +02:00
MarcoFalke fa6c82dd9b
ci: Remove clang version pin in test-each-commit 2024-05-15 09:53:00 +02:00
merge-script 3d24189664
Merge bitcoin/bitcoin#30098: refactor: simplify `FormatSubVersion` using strprintf/Join
12d82817bf refactor: simplify `FormatSubVersion` using strprintf/Join (Sebastian Falbesoner)

Pull request description:

  Rather than using std::ostringstream and manually joining the comments, use strprintf and our own `Join` helper.

ACKs for top commit:
  maflcko:
    utACK 12d82817bf
  TheCharlatan:
    tACK 12d82817bf
  hebasto:
    ACK 12d82817bf, I have reviewed the code and it looks OK.
  tdb3:
    ACK for 12d82817bf.

Tree-SHA512: b9b965c4416a4c0c8727e3c4b40da4be04b14067200220492e9bed4fa35c1907fb5cdec2a30052b9e762f71da3d3cf042f43c96ab1f2523df5bb9920b44ea2a5
2024-05-15 12:48:37 +08:00
merge-script 695d80126f
Merge bitcoin/bitcoin#30074: contrib: use ENV flags in get_arch
b59a027d95 contrib: drop dead get_machine from test sym check (fanquake)
e6aba463ad contrib: use env_flags in get_arch (fanquake)

Pull request description:

  This isn't an issue right now (because the get_arch check is simple), but becomes one as soon as we want to use `lld` for linking, and need LDFLAGS (otherwise we call `ld` and fail, see it's usage in #21778). So I've split this out for review. It also makes sense to use the same flags for all compilation in these checks.

  Also drops some dead code in test-symbol-check.

ACKs for top commit:
  TheCharlatan:
    ACK b59a027d95

Tree-SHA512: d8afc4144815369aae63cf6dc6e983af46f208c7043d6ea5c9c811152649c256a8e67eb6864ea9d385d87b6b049fece07710a84b90da325da7fc3f05efcaacd6
2024-05-15 09:02:32 +08:00
Ava Chow f5fc3190fb
Merge bitcoin/bitcoin#29086: refactor: Simply include CTxMemPool::Options in CTxMemPool directly rather than duplicating definition
cc67d33fda refactor: Simply include CTxMemPool::Options in CTxMemPool directly rather than duplicating definition (Luke Dashjr)

Pull request description:

  Instead of duplicating mempool options two places, just include the Options struct directly on the CTxMemPool

ACKs for top commit:
  achow101:
    ACK cc67d33fda
  kristapsk:
    cr utACK cc67d33fda
  jonatack:
    ACK cc67d33fda

Tree-SHA512: 9deb5ea6f85eeb1c7e04536cded65303b0ec459936a97e4f257aff2c50b0984a4ddbf69a4651f48455b9c80200a1fd24e9c74926874fdd9be436bbbe406251ce
2024-05-14 20:00:34 -04:00
Ryan Ofsky dbb3113082
Merge bitcoin/bitcoin#30083: kernel: Remove batchpriority from kernel library
d4b17c7d46 kernel: Remove batchpriority from kernel library (TheCharlatan)

Pull request description:

  The current usage of ScheduleBatchPriority is not transparent. Once the thread scheduling is changed, it remains unchanged for the remainder of the thread's lifetime. So move the call from `ImportBlocks` to the init code where it is clearer that its effect lasts for the entire lifetime of the thread.

  Users of the kernel library might not expect `ImportBlocks` to have an influence on the thread it is called in. Particularly since it is only a compile time option and cannot be controlled at runtime. With this patch users of the kernel library can now freely choose their own scheduling policy.

  This PR is easier reviewed with `git diff --color-moved-ws=ignore-all-space --color-moved=dimmed-zebra`

  ---
  This PR is part of the [libbitcoinkernel project](https://github.com/bitcoin/bitcoin/issues/27587).

ACKs for top commit:
  maflcko:
    ACK d4b17c7d46 📭
  ryanofsky:
    Code review ACK d4b17c7d46, just added suggested comment since last review
  hebasto:
    ACK d4b17c7d46, I have reviewed the code and it looks OK.

Tree-SHA512: cafedecd9affad58ddd7f30f68bba71291ca951bb186ff4b2da04b7f21f0b26e5e3143846d032b9e391bd5ce6c7466b97aa3758d2a85ebd7353eb8b69139641a
2024-05-14 11:20:33 -04:00
glozow 0fb17bf61a [log] updates in TxOrphanage
- Add elapsed time in "remove orphan" log
- Add size in "stored orphan" log
- grammar edit
2024-05-14 10:38:57 +01:00
glozow b16da7eda7 [functional test] attackers sending mutated orphans 2024-05-14 10:38:57 +01:00
glozow 6675f6428d [unit test] TxOrphanage handling of same-txid-different-witness txns 2024-05-14 10:32:28 +01:00
glozow 8923edfc1f [p2p] allow entries with the same txid in TxOrphanage
Index by wtxid instead of txid to allow entries with the same txid but
different witnesses in orphanage. This prevents an attacker from
blocking a transaction from entering the orphanage by sending a mutated
version of it.
2024-05-14 10:32:28 +01:00
glozow c31f148166 [refactor] TxOrphanage::EraseTx by wtxid
No behavior change right now, as transactions in the orphanage are
unique by txid. This makes the next commit easier to review.
2024-05-14 10:32:28 +01:00
glozow efcc593017 [refactor] TxOrphanage::HaveTx only by wtxid 2024-05-14 10:32:27 +01:00
glozow 7e475b9648 [p2p] don't query orphanage by txid 2024-05-14 10:31:56 +01:00
TheCharlatan d4b17c7d46
kernel: Remove batchpriority from kernel library
The current usage of ScheduleBatchPriority is not transparent. Once the
thread scheduling is changed, it remains unchanged for the remainder of
the thread's lifetime. So move the call from `ImportBlocks` to the init
code where it is clearer that its effect lasts for the entire lifetime
of the thread.

Users of the kernel library might not expect `ImportBlocks` to have an
influence on the thread it is called in. Particularly since it is only a
compile time option and cannot be controlled at runtime. With this patch
users of the kernel library can now choose their own scheduling policy.
2024-05-14 10:26:28 +02:00
merge-script 7fcf4e9979
Merge bitcoin/bitcoin#30078: depends: set AR & RANLIB for CMake
019ad7327c depends: set RANLIB for CMake (fanquake)
43cfb428cb depends: set NM for CMake (fanquake)
1e4412b317 depends: set AR for CMake (fanquake)

Pull request description:

  Needed for #21778. Should be more correct in any case.

ACKs for top commit:
  theuni:
    utACK 019ad7327c. I didn't test, but I tried this approach on a few deps and it seemed to work as expected.
  TheCharlatan:
    ACK 019ad7327c

Tree-SHA512: 78cc8981456f7476cafca0e40fcc569e474b92004c8024d1c4268b6aab53175074a06ab17ebded8d706bf0a7f77401642dd38bb7ce2e4b04abdcd149d3d69969
2024-05-14 11:47:09 +08:00
Sebastian Falbesoner 12d82817bf refactor: simplify `FormatSubVersion` using strprintf/Join
Rather than using std::ostringstream and manually joining the
comments, use strprintf and our own `Join` helper.
2024-05-13 23:31:46 +02:00
Ava Chow d6069cb8d6
Merge bitcoin/bitcoin#28233: validation: don't clear cache on periodic flush: >2x block connection speed
4a6d1d1e3b validation: don't clear cache on periodic flush (Andrew Toth)

Pull request description:

  Since https://github.com/bitcoin/bitcoin/pull/17487 we no longer need to clear the coins cache when syncing to disk. A warm coins cache significantly speeds up block connection, and only needs to be fully flushed when nearing the `dbcache` limit.

  Periodic flushes occur every 24 hours, which empties the cache and causes block connection to slow down. By keeping the cache through periodic flushes a node can run for several days with an increasingly hotter cache and connect blocks much more quickly. Now not only can setting a higher `dbcache` value be beneficial for IBD, it can also be beneficial for connecting blocks faster.

  To benchmark in real world usage, I spun up 6 identical `t2.small` AWS EC2 instances, all running in the same region in the same VPC. I configured 2 instances to run master, 2 instances to run the change in this PR, and 2 instances to run the change in this PR but with `dbcache=1000`. All instances had `prune=5000` and a 20 GB `gp2` `EBS` volume. A 7th EC2 instance in the same VPC ran master and connected only to some trusted nodes in the outside network. Each of the 6 nodes under test only connected directly to this 7th instance. I manually pruned as much as possible and uploaded the same `blocks`, `chainstate` and `mempool.dat` to all instances. I started all 6 peers simultaneously at block height `835245` and ran them for over a week until block `836534`.

  The results were much faster block connection times for this branch compared to master, and much faster for this branch with `dbcache=1000` compared to default `dbcache`.

  |  branch |speed |
  |-----------:|----------:|
  | master 1 | 1995.49ms/blk |
  | master 2 | 2129.78ms/blk |
  | branch default dbcache 1 | 1189.65ms/blk |
  | branch default dbcache 2 | 1037.74ms/blk |
  | branch dbcache=1000 1 | 393.69ms/blk |
  | branch dbcache=1000 2 | 427.77ms/blk |

  The log files of all 6 instances are [here](https://gist.github.com/andrewtoth/03c95033e7581d5dbc5be028639a1a91).
  There is a lot of noise with the exact times of blocks being connected, so I plotted the rolling 20 block connect time averages. The large dots are the times where the cache is emptied. For the red master nodes, this happens every 24 hours. The blue branch nodes with default `dbcache` only filled up and emptied the caches once, which is seen in the middle. The green branch nodes with 1000 `dbcache` never emptied the cache. It is very clear from the chart that whenever the cache is emptied, connect block speed degrades significantly.

  ![plot](https://github.com/bitcoin/bitcoin/assets/237213/802cb28d-1ad4-47c3-a886-c5366b423eca)

  Also note that this still clears the cache for pruning flushes. Having frequent pruning flushes with a large cache that doesn't clear is less performant than the status quo https://github.com/bitcoin/bitcoin/pull/15265#issuecomment-458657451. See https://github.com/bitcoin/bitcoin/pull/28280.

ACKs for top commit:
  sipa:
    utACK 4a6d1d1e3b
  achow101:
    ACK 4a6d1d1e3b
  brunoerg:
    crACK 4a6d1d1e3b

Tree-SHA512: 05dbc677bc309bbcf89c52a6c5e853e2816b0ef0b5ee3719b30696df315a0427e244bb82da9ad828ec0e7ea8764552f8affe14c0184b52adf1909f5d8c1b4f9e
2024-05-13 16:31:19 -04:00
Ryan Ofsky 0503cbea9a
Merge bitcoin/bitcoin#30094: rpc: move UniValue in blockToJSON
b77bad309e rpc: move UniValue in blockToJSON (willcl-ark)

Pull request description:

  Fixes: #24542
  Fixes: #30052

  Without explicitly declaring the move, these `UniValues` get copied, causing increased memory usage. Fix this by explicitly moving the `UniValue` objects.

  Used by `rest_block` and `getblock` RPC.

ACKs for top commit:
  maflcko:
    review ACK b77bad309e
  ismaelsadeeq:
    ACK b77bad309e
  TheCharlatan:
    ACK b77bad309e
  theuni:
    utACK b77bad309e
  hebasto:
    ACK b77bad309e, I have reviewed the code and it looks OK.
  BrandonOdiwuor:
    ACK b77bad309e

Tree-SHA512: 767608331040f9cfe5c3568ed0e3c338920633472a1a50d4bbb47d1dc69d2bb11466d611f050ac8ad1a894b47fe1ea4d968cf34cbd44d4bb8d479fc5c7475f6d
2024-05-13 16:15:53 -04:00
glozow ff8c606cf1
Merge bitcoin/bitcoin#29974: fuzz: txorphan tests fixups
58594c7040 fuzz: txorphan tests fixups (Sergi Delgado Segura)

Pull request description:

  Motivated by https://github.com/bitcoin/bitcoin/pull/28970#discussion_r1576401327

  Adds the following fixups in txorphan fuzz tests:

  - Don't bond the output count of the created orphans to the number of available coins
  - Allow duplicate inputs but don't store duplicate outpoints

  Most significantly, this gets rid of the `duplicate_input` flag altogether, making the test easier to reason about. Notice how, under normal conditions, duplicate inputs would be caught by `MemPoolAccept::PreChecks`, however, no validations checks are run on the test before adding data to the orphanage (neither were they before this patch)

  ## Rationale

  The way the test is currently written, duplicate inputs are allowed based on a random flag (`duplicate_input`). If the flag is unset, upon selecting an outpoint as input for a new transaction, the input is popped to prevent re-selection and later re-added to the collection (once all inputs have been picked). However, the re-addition to the collection is performed independently of whether the flag was set or not. This means that, if the flag is set, the selected inputs are duplicated which in turn makes these inputs more likely to be re-picked in the following iteration of the loop.

  Additionally, both the input and output count of the transaction are bonded to the number of available outpoints. This makes sense for the former, but the latter shouldn't be.

ACKs for top commit:
  maflcko:
    utACK 58594c7040
  glozow:
    ACK 58594c7
  instagibbs:
    ACK 58594c7040

Tree-SHA512: e97cc2a43e388f87b64d2e4e45f929dd5b0dd85d668dd693b75e4c9ceea734cd7645952385d428208d07b70e1aafbec84cc2ec264a2e07d36fc8ba3e97885a8d
2024-05-13 16:00:49 +01:00
glozow c7deb76118
Merge bitcoin/bitcoin#29994: doc: removed help text saying that peers may not connect automatically
95897ff181 doc: removed help text saying that peers may not connect automatically (kevkevin)

Pull request description:

  Introduced in https://github.com/bitcoin/bitcoin/pull/23542 and released in version 23.0 there has been significant time since this change (2 years).

  This should be removed as it is no longer relevant

ACKs for top commit:
  stickies-v:
    ACK 95897ff181
  tdb3:
    ACK for 95897ff181.
  vasild:
    ACK 95897ff181
  jonatack:
    ACK 95897ff181
  kristapsk:
    ACK 95897ff181. According to https://bitnodes.io/dashboard/#user-agents stats, most nodes on the network are v23+.

Tree-SHA512: 9e35194f8a1e06f1447450af2ea30cdc43722665c2d2e4b7aa9a52afac5c1e83fed744742c836743a555cc180c90f9eebdc6637eba6190010d693eef9c5834f7
2024-05-13 15:58:36 +01:00
willcl-ark b77bad309e
rpc: move UniValue in blockToJSON
Without explicitly declaring the move, these UniValues get copied,
causing increased memory usage. Fix this by explicitly moving the
UniValue objects.

Used by `rest_block` and `getblock` RPC.
2024-05-13 14:30:44 +01:00
fanquake 019ad7327c
depends: set RANLIB for CMake 2024-05-13 20:01:45 +08:00
fanquake 43cfb428cb
depends: set NM for CMake 2024-05-13 20:01:37 +08:00
fanquake 1e4412b317
depends: set AR for CMake 2024-05-13 20:01:06 +08:00
merge-script b94061902e
Merge bitcoin-core/gui#812: Fix create unsigned transaction fee bump
671b7a3251 gui: fix create unsigned transaction fee bump (furszy)

Pull request description:

  Fixes #810.

  Not much to explain; we were requiring the wallet to be unlocked for the unsigned transaction creation process.
  Fix this by moving the unlock wallet request to the signed transaction creation process.

ACKs for top commit:
  pablomartin4btc:
    tACK 671b7a3251
  hebasto:
    ACK 671b7a3251, tested on Ubuntu 24.04.

Tree-SHA512: 5b9ec5a1b91c014c05c83c63daaa8ba33f9dc1bfa930442315a0913db710df17a1b6bb4ad39f1419a7054f37ebedb7ad52e1c5d3d2fb444b1676162e89a4efd2
2024-05-12 15:30:34 +01:00
merge-script ee9491369f
Merge bitcoin/bitcoin#29658: Bugfix: GUI: Help messages already have a trailing newline, so don't add an extra one
d1ed09a764 Bugfix: GUI: Help messages already have a trailing newline, so don't add an extra one (Luke Dashjr)

Pull request description:

  Reviewing #29585, I noticed that `bitcoin-qt` adds an extra newline for `-help` and `-version` beyond the other binaries'.

ACKs for top commit:
  hebasto:
    ACK d1ed09a764, tested on Ubuntu 24.04.

Tree-SHA512: 15ee9d1060c2492bb3b04a0ac4cb53f7b959bbe32bce415793da0c221f1c963c8f2bb3996ea07d1a7c192bfc2e23be2cd7d4e5649c592eb3fc03906c2763f1aa
2024-05-12 14:21:21 +01:00
merge-script 3207286680
Merge bitcoin-core/gui#813: Don't permit port in proxy IP option
10c5275ba4 gui: don't permit port in proxy IP option (willcl-ark)

Pull request description:

  Fixes: https://github.com/bitcoin-core/gui/issues/809

  Previously it was possible through the GUI to enter an IP address:port into the "Proxy IP" configuration box. After the node was restarted the errant setting would prevent the node starting back up until manually removed from settings.json.

  Prevent this with a simple check for ":" in the string. This is acceptable here in the GUI setting because we already fail on a hostname such as "http://x.x.x.x", so it won't cause false positives.

ACKs for top commit:
  furszy:
    utACK 10c5275ba4
  hebasto:
    ACK 10c5275ba4, tested on Ubuntu 24.04.

Tree-SHA512: ed83590630cf693680a3221f701ecd18dd08710a17b726dc4978a3a6e330a34fb77d73a4f710c01bcb3faf88b6604ff37bcdbb191ce1623348ca5b92fd6fe9a7
2024-05-11 19:34:12 +01:00
merge-script 182983c6ab
Merge bitcoin-core/gui#788: debugwindow: update session ID tooltip
3bf00e1360 gui: debugwindow: update session ID tooltip (Marnix)

Pull request description:

  When you have a v2 connection, there is always a session ID.

  the _if any_ is a leftover from https://github.com/bitcoin-core/gui/pull/754, where the session ID property initially would always be displayed (transport v1 and v2).
  So the session ID could be empty when you have a v1 connection.

  As now the _Session ID_ property only is displayed for v2 connection, there will always be a session ID.

  master

  ![sessionIDifany](https://github.com/bitcoin-core/gui/assets/93143998/d4d7df43-8281-4b1e-83fc-5a3788d7724e)

  PR

  ![sessionID](https://github.com/bitcoin-core/gui/assets/93143998/221f6831-7d12-4913-be76-325a87baad2e)

  Session ID not shown when transport v1

  ![transportv1](https://github.com/bitcoin-core/gui/assets/93143998/6c067a08-4be4-4ce1-b514-80654ca5cd43)

  <!--
  *** Please remove the following help text before submitting: ***

  Pull requests without a rationale and clear improvement may be closed
  immediately.

  GUI-related pull requests should be opened against
  https://github.com/bitcoin-core/gui
  first. See CONTRIBUTING.md
  -->

  <!--
  Please provide clear motivation for your patch and explain how it improves
  Bitcoin Core user experience or Bitcoin Core developer experience
  significantly:

  * Any test improvements or new tests that improve coverage are always welcome.
  * All other changes should have accompanying unit tests (see `src/test/`) or
    functional tests (see `test/`). Contributors should note which tests cover
    modified code. If no tests exist for a region of modified code, new tests
    should accompany the change.
  * Bug fixes are most welcome when they come with steps to reproduce or an
    explanation of the potential issue as well as reasoning for the way the bug
    was fixed.
  * Features are welcome, but might be rejected due to design or scope issues.
    If a feature is based on a lot of dependencies, contributors should first
    consider building the system outside of Bitcoin Core, if possible.
  * Refactoring changes are only accepted if they are required for a feature or
    bug fix or otherwise improve developer experience significantly. For example,
    most "code style" refactoring changes require a thorough explanation why they
    are useful, what downsides they have and why they *significantly* improve
    developer experience or avoid serious programming bugs. Note that code style
    is often a subjective matter. Unless they are explicitly mentioned to be
    preferred in the [developer notes](/doc/developer-notes.md), stylistic code
    changes are usually rejected.
  -->

  <!--
  Bitcoin Core has a thorough review process and even the most trivial change
  needs to pass a lot of eyes and requires non-zero or even substantial time
  effort to review. There is a huge lack of active reviewers on the project, so
  patches often sit for a long time.
  -->

ACKs for top commit:
  vostrnad:
    ACK 3bf00e1360
  kristapsk:
    ACK 3bf00e1360
  jarolrod:
    ACK 3bf00e1360
  pablomartin4btc:
    tACK 3bf00e1360
  hebasto:
    ACK 3bf00e1360.

Tree-SHA512: 4de0c56c070dc5d1cee73b629bdf3d1778c6d90d512337aa6cfd3eed4ce95cbcfbe5713e2942f6fc22907b2c4d9df7979ba8e9f91f7cc173b42699ea35113f96
2024-05-11 19:13:34 +01:00
merge-script b47c393d8a
Merge bitcoin/bitcoin#30081: refactor: Remove unused code from `subprocess.h` header
5a11d3023f refactor, subprocess: Remove unused stream API calls (Hennadii Stepanov)
05b6f8793c refactor, subprocess: Remove unused `Popen::child_created_` data member (Hennadii Stepanov)
9e1ccf55e1 refactor, subprocess: Remove unused `Popen::poll()` (Hennadii Stepanov)
24b53fc84a refactor, subprocess: Remove `Popen::pid()` (Hennadii Stepanov)

Pull request description:

  This PR continues https://github.com/bitcoin/bitcoin/pull/29961.

  Please note that `Popen::poll()` is not required for https://github.com/bitcoin/bitcoin/pull/29868 anymore.

ACKs for top commit:
  theuni:
    Easy code review ACK 5a11d3023f since it's all removals :)
  theStack:
    Code-review ACK 5a11d3023f

Tree-SHA512: 11f984f8384c337782d058afa80011e88087a1b5a3ed6e4678d492e6c232b706a26312463c5dd8c529aa477497c8afca9f54574e0e36e3edd5675bd5d8424bbb
2024-05-11 18:37:49 +08:00
merge-script 4d3f1d08db
Merge bitcoin/bitcoin#29739: build: swap cctools otool for llvm-objdump
7f5ac4520d build: swap otool for (llvm-)objdump (fanquake)

Pull request description:

  This tool is used in GUI packaging on macOS, and also somewhat of a blocker for #21778. The main issue is that some distros don't really ship this tool in a standard ways, i.e Ubuntu only ships `llvm-otool` with a version suffix, i.e `llvm-otool-17`, which makes it hard to find and use. Rather than trying to deal with that mess, switch to using the equivalent LLVM tool (objdump), which is a drop-in replacement.

ACKs for top commit:
  TheCharlatan:
    ACK 7f5ac4520d
  theuni:
    ACK 7f5ac4520d. Tested `make deploy` on native macOS. Looks good.
  hebasto:
    ACK 7f5ac4520d.

Tree-SHA512: ac978043f14fb448010542a4a7ce8c6c74b4cbd90f83b4cb4d0bff55974010f10a70b5354f65b239a8bd961d7a3aca22ca165b42954ca87879b9e0524db5f879
2024-05-11 18:34:42 +08:00
Ava Chow 2cedb42a92
Merge bitcoin/bitcoin#29252: kernel: Remove key module from kernel library
96378fe734 Refactor: Remove ECC_Start and ECC_Stop from key header (TheCharlatan)
41eba5bd71 kernel: Remove key module from kernel library (TheCharlatan)
a08d2b3cb9 tools: Use ECC_Context helper in bitcoin-tx and bitcoin-wallet tools (Ryan Ofsky)
28905c1a64 test: Use ECC_Context helper in bench and fuzz tests (Ryan Ofsky)
538fedde1d common: Add ECC_Context RAII wrapper for ECC_Start/ECC_Stop (Ryan Ofsky)

Pull request description:

  The key module's functionality is not used by the kernel library, but currently kernel users are still required to initialize the key module's `secp256k1_context_sign` global as part of the `kernel::Context` through `ECC_Start`. So move the `ECC_Start` call to the `NodeContext` ctor instead to completely remove the key module from the kernel library.

  The gui tests currently keep multiple `NodeContext` objects in memory, so call `ECC_Stop` manually to avoid triggering an assertion on `ECC_Start`.

  ---

  This PR is part of the [libbitcoinkernel project](https://github.com/bitcoin/bitcoin/issues/27587). It removes a module from the kernel library.

ACKs for top commit:
  achow101:
    ACK 96378fe734
  ryanofsky:
    Code review ACK 96378fe734. Just suggested comment changes since last review.
  theuni:
    utACK 96378fe734

Tree-SHA512: 40be427e8e2c920c0e3ce64a9bdd90551be27a89af11440bfb6ab0dd3a1d1ccb7cf1f82383cd782818cd1bb44d5ae5d2161cf4d78d3127ce4987342007090bab
2024-05-10 13:18:00 -04:00
Ava Chow 7066980273
Merge bitcoin/bitcoin#29948: test: add missing comparison of node1's mempool in MempoolPackagesTest
e912717ff6 test: add missing comparison of node1's mempool in MempoolPackagesTest (umiumi)

Pull request description:

  #29941 Recreated a pull request because there was a conflict. Trying to resolve the conflict but the old one automatically closed.

  Add missing comparison for TODO comments in `mempool_packages.py`

  Also, notice that the ancestor size limits and descendant size limits actually implemented in #21800   ,  so I removed the todo for those two size limits.

ACKs for top commit:
  kevkevinpal:
    ACK [e912717](e912717ff6)
  achow101:
    ACK e912717ff6
  alfonsoromanz:
    Tested ACK e912717ff6. The code looks good to me and the test execution is successful.
  rkrux:
    tACK [e912717](e912717ff6)

Tree-SHA512: 8cb51746b0547369344c9ceef59599bfe9c91d424687af5e24dc6641f9e99fb433515d79c724e71fd3d5e02994f0cef623d3674367b8296b05c3c6fcdde282ef
2024-05-10 12:44:42 -04:00
Hennadii Stepanov 5a11d3023f
refactor, subprocess: Remove unused stream API calls 2024-05-10 14:58:27 +01:00
Hennadii Stepanov 05b6f8793c
refactor, subprocess: Remove unused `Popen::child_created_` data member 2024-05-10 14:47:15 +01:00
Hennadii Stepanov 9e1ccf55e1
refactor, subprocess: Remove unused `Popen::poll()` 2024-05-10 14:47:07 +01:00
Hennadii Stepanov 24b53fc84a
refactor, subprocess: Remove `Popen::pid()` 2024-05-10 14:42:31 +01:00
Ava Chow 98dd4e712e
Merge bitcoin/bitcoin#30006: test: use sleepy wait-for-log in reindex readonly
fd6a7d3a13 test: use sleepy wait-for-log in reindex readonly (Matthew Zipkin)

Pull request description:

  Also rename the busy wait-for-log method to prevent recurrence. See https://github.com/bitcoin/bitcoin/pull/27039#discussion_r1532578152

ACKs for top commit:
  maflcko:
    utACK fd6a7d3a13
  achow101:
    ACK fd6a7d3a13
  tdb3:
    ACK for fd6a7d3a13
  rkrux:
    ACK [fd6a7d3](fd6a7d3a13)

Tree-SHA512: 7ff0574833df1ec843159b35ee88b8bb345a513ac13ed0b72abd1bf330c454a3f9df4d927871b9e3d37bfcc07542b06ef63acef8e822cd18499adae8cbb0cda8
2024-05-09 18:31:03 -04:00
Ava Chow 24572cf768
Merge bitcoin/bitcoin#29939: test: add MiniWallet tagging support to avoid UTXO mixing, use in `fill_mempool`
dd8fa86193 test: use tagged ephemeral MiniWallet instance in fill_mempool (Sebastian Falbesoner)
b2037ad4ae test: add MiniWallet tagging support to avoid UTXO mixing (Sebastian Falbesoner)
c8e6d08236 test: refactor: eliminate COINBASE_MATURITY magic number in fill_mempool (Sebastian Falbesoner)
4f347140b1 test: refactor: move fill_mempool to new module mempool_util (Sebastian Falbesoner)

Pull request description:

  Different MiniWallet instances using the same mode (either ADDRESS_OP_TRUE, RAW_OP_TRUE or RAW_P2PK) currently always create and spend UTXOs with identical output scripts, which can cause unintentional tx dependencies (see e.g. the discussion in https://github.com/bitcoin/bitcoin/pull/29827#discussion_r1565443465). In order to avoid mixing of UTXOs between instances, this PR introduces the possibility to provide a MiniWallet tag name, that is used to derive a different internal key for the taproot construction, leading to a different P2TR output script. Note that since we use script-path spending and only the key-path is changed here, no changes in the MiniWallet spending logic are needed.

  The new tagging option is then used in the `fill_mempool` helper to create an ephemeral wallet for the filling txs, as suggested in https://github.com/bitcoin/bitcoin/pull/29827#discussion_r1565964264. To avoid circular dependencies, `fill_mempool` is moved to a new module `mempool_util.py` first.

  I'm still not sure if a generic word like "tag" is the right term for what this tries to achieve, happy to pick up better suggestions. Also, maybe passing a tag name is overkill and a boolean flag like "random_output_script" is sufficient?

ACKs for top commit:
  glozow:
    ACK dd8fa86193
  achow101:
    ACK dd8fa86193
  rkrux:
    tACK [dd8fa86](dd8fa86193)
  brunoerg:
    utACK dd8fa86193

Tree-SHA512: 5ef3558c3ef5ac32cfa79c8f751972ca6bceaa332cd7daac7e93412a88e30dec472cb041c0845b04abf8a317036d31ebddfc3234e609ed442417894c2bdeeac9
2024-05-09 16:54:18 -04:00
Ava Chow 012e540ace
Merge bitcoin/bitcoin#29122: test: adds outbound eviction functional tests, updates comment in ConsiderEviction
d53d848347 test: adds outbound eviction tests for non outbound-full-relay peers (Sergi Delgado Segura)
a8d9a0edc7 test: adds outbound eviction functional tests, updates comment in ConsiderEviction (Sergi Delgado Segura)

Pull request description:

  ## Motivation

  While checking the outbound eviction code I realized a case was not considered within the comments, which in turn made me realize we had no functional tests for the outbound eviction case (when I went to check/add the test case).

  This PR updates the aforementioned comment and adds functional tests to cover the outbound eviction logic, in addition to the existing unit tests found at `src/test/denialofservice_tests.cpp`.

ACKs for top commit:
  davidgumberg:
    reACK d53d848347
  tdb3:
    Re ACK for d53d848347
  achow101:
    ACK d53d848347
  cbergqvist:
    ACK d53d848347

Tree-SHA512: 633b84bb1229fe21e2f650c1beada33ca7f190b64eafd64df2266516d21175e5d652e019ff7114f00cb8bd19f5817dc19e65adf75767a88e24dc0842ce40c63e
2024-05-09 16:20:43 -04:00
fanquake b59a027d95
contrib: drop dead get_machine from test sym check 2024-05-10 00:13:50 +08:00
fanquake e6aba463ad
contrib: use env_flags in get_arch
Otherwise we fail to link when trying to use lld.
2024-05-10 00:13:31 +08:00
Ava Chow ceb1e078f8
Merge bitcoin/bitcoin#28793: contrib: Add asmap-tool
6abe772a17 contrib: Add asmap-tool (Fabian Jahr)

Pull request description:

  This adds `asmap.py` and `asmap-tool.py` from sipa's `nextgen` branch: https://github.com/sipa/asmap/tree/nextgen

  The motivation is that we should maintain the tooling for de- and encoding asmap files within the bitcoin core repository because it is not possible to use an asmap file that is not encoded.

  We already had an earlier version of `asmap.py` within the seeds contrib tools. The newer version only had a small amount of changes and is still compatible, so the old version is removed from contrib/seeds and the new version is made available to `makeseeds.py`.

ACKs for top commit:
  virtu:
    ACK [6abe772](6abe772a17)
  0xB10C:
    ACK 6abe772a17
  achow101:
    ACK 6abe772a17
  brunoerg:
    ACK 6abe772a17

Tree-SHA512: cc2a82ffa4eb46fa0ce4ca769dd82f8d0d2f37fc3652aa748eeb060e1142f9da4035008fe89433e2fd524a4dc153b7b9c085748944b49137b37009b0c0be8afb
2024-05-09 11:57:30 -04:00
Ava Chow 921c61e9a5
Merge bitcoin/bitcoin#29973: test: Assumeutxo: ensure failure when importing a snapshot twice
b259b0e8d3 [Test] Assumeutxo: ensure failure when importing a snapshot twice (Alfonso Roman Zubeldia)

Pull request description:

  I am getting familiar with the `assume_utxo` tests and I found that the scenario of trying to activate a snapshot twice is not covered. This test is to ensure failure when loading a snapshot if there is already a snapshot-based chainstate.

ACKs for top commit:
  fjahr:
    Code review ACK b259b0e8d3
  kevkevinpal:
    tACK [b259b0e](b259b0e8d3)
  achow101:
    ACK b259b0e8d3
  rkrux:
    tACK [b259b0e](b259b0e8d3)

Tree-SHA512: 3510861390d0e40cdad6861b728df04827a1b63e642f3d956aee66ed2770b1cb7e3aa3eb00c62eb9da0544703c943cc5296936c9ebfcac18c719741c354421bb
2024-05-09 11:55:15 -04:00
TheCharlatan 96378fe734
Refactor: Remove ECC_Start and ECC_Stop from key header
They are unused outside of the key module now.
2024-05-09 15:56:10 +02:00