Commit Graph

26025 Commits

Author SHA1 Message Date
Luke Dashjr
46a8ac09a1 QA/sanity_tests: Run dbwrapper_SanityCheck 2024-06-21 18:35:52 +00:00
MarcoFalke
9691293934 refactor: performance-for-range-copy in psbt.h
Github-Pull: #30253
Rebased-From: fab01b5220
2024-06-12 20:50:06 +00:00
Luke Dashjr
5f111fde36 Bugfix: Restore <string> include in rest.cpp 2024-06-10 14:36:41 +00:00
Andrew Toth
793e8f5f87 rest: read raw block in rest_block and deserialize for json
Note that for speed this commit also removes the proof of work and
signet signature checks before returning the block in getblock.
It is assumed if a block is stored it will be valid.

Github-Pull: #26415
Rebased-From: e710cefd57
2024-06-10 14:05:11 +00:00
Andrew Toth
5417597c6c rpc: read raw block in getblock and deserialize for verbosity > 0
Note that for speed this commit also removes the proof of work and
signet signature checks before returning the block in getblock.
It is assumed if a block is stored it will be valid.

Github-Pull: #26415
Rebased-From: 95ce0783a6
2024-06-10 14:05:11 +00:00
Andrew Toth
bbbcf92de2 zmq: read raw block with ReadRawBlockFromDisk
Github-Pull: #26415
Rebased-From: 38265cc14e
2024-06-10 14:05:11 +00:00
Andrew Toth
18aa12fb5c blockstorage: check nPos in ReadRawBlockFromDisk before seeking back
ReadRawBlockFromDisk assumes a non-null pos that has an nPos >= 8.
This simple check makes the function safer to call in the future,
so callers don't need to worry about causing UB if the pos is null.

Github-Pull: #26415
Rebased-From: da338aada7
2024-06-10 14:05:11 +00:00
Hennadii Stepanov
cafe533fef build: Add missed definition for AM_OBJCXXFLAGS
Github-Pull: #29577
Rebased-From: bd8f0354ba
2024-06-08 01:56:49 +00:00
Hennadii Stepanov
ba35920542
build: Fix building fuzz binary on on SunOS / illumos
Github-Pull: #30216
Rebased-From: 3299abce94
2024-06-04 11:17:16 +01:00
Luke Dashjr
fe21e5bc03 GUI: setWalletActionsEnabled: Keep historyAction disabled if privacy mode is already on 2024-05-28 20:52:06 +00:00
Hennadii Stepanov
80032d6917
qt: 27.1rc1 translations update 2024-05-28 10:18:55 +01:00
Cory Fields
2ae23d32c7 rpc: avoid copying into UniValue
These are simple (and hopefully obviously correct) copies that can be moves
instead.

Github-Pull: #30115
Rebased-From: d7707d9843
2024-05-23 19:40:02 +00:00
Jon Atack
31adcfa171
test: add GetAddedNodeInfo() CJDNS regression unit test
Github-Pull: #30085
Rebased-From: d0b047494c
2024-05-23 09:44:19 +01:00
Jon Atack
9cdb9edfb8
p2p, bugfix: detect addnode cjdns peers in GetAddedNodeInfo()
Addnode (manual) peers connected to us via the cjdns network are currently not
detected by CConnman::GetAddedNodeInfo(), i.e. fConnected is always false.

This causes the following issues:

- RPC `getaddednodeinfo` incorrectly shows them as not connected

- CConnman::ThreadOpenAddedConnections() continually retries to connect them

Github-Pull: #30085
Rebased-From: 684da97070
2024-05-22 09:49:00 +01:00
Luke Dashjr
15680a2e73 GUI: Omit DbDump option for backup of BDB wallets 2024-05-16 17:42:10 +00:00
Luke Dashjr
6b1898af6d GUI: Support backup to DumpWallet format 2024-05-16 17:42:10 +00:00
Luke Dashjr
ce88a6dea4 interfaces/Wallet: Add DumpWallet format to backupWallet interface 2024-05-16 17:42:10 +00:00
Cory Fields
3c26058da2
crypto: disable asan for sha256_sse4 with clang and -O0
Clang is unable to compile the Transform function for that combination of
options.

Github-Pull: #30097
Rebased-From: 141df0a288
2024-05-16 08:41:52 +08:00
Aaron Dewes
43c9a1772e Add reindex=auto flag to automatically reindex corrupt data
This PR allows the reindex flag to be set to auto, which automatically starts a reindex if the chain state or block index are corrupt.
This can be especially useful for  Raspberry Pi based full nodes, which often experience power outages or similar issues which can corrupt data.
It allows full node operators to make Bitcoin Core reindex automatically, without having to worry about removing the reindex flag again. (Which isn't much effort, but can be annoying to forget)

Github-Pull: #22072
Rebased-From: 602f4da9178dff11853431f9a7115194f6a016ac
2024-05-15 23:43:03 +00:00
Luke Dashjr
01dd32a709 interfaces/Wallet: Add the ability to choose a backup format
Also outputs a bilingual_str error (unused for now)
2024-05-15 23:34:17 +00:00
Luke Dashjr
111058215c Wallet: Pass dump_filename to DumpWallet as an argument 2024-05-15 23:34:16 +00:00
Jon Atack
eda384078d wallet: introduce setfeerate, an improved settxfee in sat/vB
Github-Pull: #20391
Rebased-From: 8e863e3d3ce457c9ca26a12e8fd6beac2f50aa7d (diff-minimised)
2024-05-15 23:06:59 +00:00
Jon Atack
01e51a3976 test: add ValueFromFeeRate/CFeeRate unit tests
(partial: CFeeRate in 0.21 doesn't take FeeEstimateMode)
2024-05-15 23:06:59 +00:00
Luke Dashjr
8baf00e0c4 core_io: Add ValueFromFeeRate helper 2024-05-15 23:06:59 +00:00
Jon Atack
09c51e7f7d policy: add CFeeRate::SatsToString helper without units 2024-05-15 23:06:59 +00:00
Luke Dashjr
318c798852 Disable lowmem flushing in test that needs determinism 2024-05-15 23:01:19 +00:00
Luke Dashjr
1a01c95586 Make lowmem threshold configurable 2024-05-15 23:01:18 +00:00
Luke Dashjr
71eae9faab util: Log reasoning when returning true from SystemNeedsMemoryReleased 2024-05-15 23:00:40 +00:00
Luke Dashjr
aed813cc1b Flush dbcache early if system is under memory pressure
No point forcing memory to get pushed out to swap just to cache db changes when we can write the db changes out instead
2024-05-15 23:00:40 +00:00
Luke Dashjr
ea8bfa036c Diff-minimise 2024-05-15 22:58:12 +00:00
w0xlt
ce9524f0b5 rpc: allow dumptxoutset to dump human-readable data
Co-authored-by: Shashwat Vangani <shaavan.github@gmail.com>
Co-authored-by: Luke Dashjr <luke-jr+git@utopios.org>
2024-05-15 22:58:11 +00:00
Luke Dashjr
21a3dd4198 Diff-minimise 2024-05-15 22:52:48 +00:00
Elichai Turkel
8463aef09f Optimized siphash implementation
Github-Pull: #18014
Rebased-From: 409c2e345225716a29c856b24e1c232a643a52ef
2024-05-15 22:52:41 +00:00
Luke Dashjr
25ea55c25d GUI: Add a warning prompt when sending to an already-used address 2024-05-15 22:40:50 +00:00
Luke Dashjr
668e18bf70 GUI: Use warning indicator for send coins entries with reused addresses 2024-05-15 22:40:50 +00:00
Luke Dashjr
bde17b6138 GUI: Implement BitcoinAddressUnusedInWalletValidator 2024-05-15 22:40:50 +00:00
Luke Dashjr
4b943c42fd GUI: QValidatedLineEdit: Add support for a warning-but-valid state 2024-05-15 22:40:50 +00:00
Luke Dashjr
42e4f13246 GUI: WalletModel: Wrap checkAddressForUsage and findAddressUsage 2024-05-15 22:40:50 +00:00
Luke Dashjr
0ba948aa4f GUI: SendConfirmationDialog: Enable changing the actual buttons used
Both buttons can be replaced with other standard buttons
2024-05-15 22:40:49 +00:00
Luke Dashjr
08ce9ecf45 GUI: SendConfirmationDialog: Defer button setup until exec 2024-05-15 22:40:49 +00:00
Luke Dashjr
86c5b4f00a GUI: Add GUIUtil::dateStr 2024-05-15 22:40:49 +00:00
Luke Dashjr
82908e28a5 interfaces/wallet: Add checkAddressForUsage and findAddressUsage 2024-05-15 22:40:49 +00:00
Luke Dashjr
9378ceaac6 Merge branch 'getaddressinfo_txids' into HEAD 2024-05-15 22:40:39 +00:00
Evan Klitzke
79e4722e62 Try to use posix_fadvise with CBufferedFile
This primarily affects blocks when bitcoin is launched with -reindex, as
that causes the block files to be loaded as CBufferedFile objects one at
a time as the reindex progresses.

Co-Authored-By: Luke Dashjr <luke-jr+git@utopios.org>

Github-Pull: #14485
Rebased-From: 289e88b3133107f8a54184d8316559c7cf8ddb12
2024-05-15 21:46:18 +00:00
furszy
6e24242027 wallet: default wallet migration, modify inconvenient backup filename
On default legacy wallets, the backup filename starts with an "-" due
to the wallet name being empty. This is inconvenient for systems who
treat what follows the initial "-" character as flags.

Github-Pull: #29586
Rebased-From: a951dba3a9
2024-05-15 21:09:13 +00:00
Jon Atack
9f05a705fc test: AddNode() CJDNS regression unit tests
Rebased-From: be4541abe5
2024-05-15 19:54:45 +00:00
Jon Atack
b5efac03db p2p, bugfix: correctly detect CJDNS addnode entries in AddNode()
Rebased-From: 28823f30dc
2024-05-15 19:54:44 +00:00
Jon Atack
ac5c317924 test: add GetAddedNodeInfo() CJDNS regression unit test
Github-Pull: #30085
Rebased-From: d0b047494c
2024-05-15 19:50:16 +00:00
Jon Atack
4421251d7d p2p, bugfix: detect addnode cjdns peers in GetAddedNodeInfo()
Addnode (manual) peers connected to us via the cjdns network are currently not
detected by CConnman::GetAddedNodeInfo(), i.e. fConnected is always false.

This causes the following issues:

- RPC `getaddednodeinfo` incorrectly shows them as not connected

- CConnman::ThreadOpenAddedConnections() continually retries to connect them

Github-Pull: #30085
Rebased-From: 684da97070
2024-05-15 19:50:16 +00:00
Martin Zumsande
6ec27a6673 init, validation: Fix -reindex option with an existing snapshot
This didn't work for two reasons:
1.) GetSnapshotCoinsDBPath() was used to retrieve the path.
    This requires coins_views to exist, but the initialisation only happens later
    (in CompleteChainstateInitialization) so the node hits an assert in
    CCoinsViewDB& CoinsDB() and crashes.

2.) The snapshot was already activated, so it has the mempool attached.
    Therefore, the mempool needs to be transferred back to the ibd
    chainstate before deleting the snapshot chainstate.

Github-Pull: #29726
Rebased-From: e57f951805
2024-05-15 19:36:12 +00:00
Roman Zeyde
4842324b7d RPC: Keep .cookie if it was replaced after being generated
Github-Pull: #28784
Rebased-From: d95dde9441fb791046394ed3784a840a54ef2ab9
2024-05-15 17:56:41 +00:00
Luke Dashjr
4fcbd58ba5 GUI: Avoid unnecessary BIP 21 references (Knots supports BIP 20 also) 2024-05-15 17:07:59 +00:00
Luke Dashjr
e310e17cad Diff-minimise 2024-05-15 16:47:00 +00:00
Luke Dashjr
27d2a53e5f Revert "test: Remove Windows-specific code from system_tests/run_command"
This reverts commit 51bc1c7126.
2024-05-15 16:47:00 +00:00
Luke Dashjr
88fe778d9d BufferedFile: fclose at destruction
This is currently indirectly implied by src/bench/load_external.cpp:LoadExternalBlockFile
	"The file will be closed by LoadExternalBlockFile()."
2024-05-15 16:14:59 +00:00
Luke Dashjr
7c70b396b1 configure: Add unsupported --with-system-libsecp256k1 configure flag 2024-05-15 00:06:03 +00:00
willcl-ark
0ba11cf908
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.

Github-Pull: #30094
Rebased-From: b77bad309e
2024-05-14 08:14:33 +08:00
willcl-ark
dedf319b08
gui: don't permit port in proxy IP option
Fixes: #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.

Github-Pull: https://github.com/bitcoin-core/gui/pull/813
Rebased-From: 10c5275ba4
2024-05-13 11:58:00 +08:00
furszy
d1289a1300
gui: fix create unsigned transaction fee bump
Github-Pull: https://github.com/bitcoin-core/gui/pull/812
Rebased-From: 671b7a3251
2024-05-13 11:57:12 +08:00
Luke Dashjr
e83f30e97c Bump default dbfilesize to 128 MiB
The default max file size for LevelDB is 2 MiB, which results in the
LevelDB compaction code generating ~4 disk cache flushes per second when
syncing with the Bitcoin network.
These disk cache flushes are triggered by fdatasync() syscall issued by the
LevelDB compaction code when reaching the max file size.

If the database is on a HDD this flush rate brings the whole system to a
crawl.
It also results in very slow throughput since 2 MiB * 4 flushes per second
is about 8 MiB / second max throughput, while even an old HDD can pull
100 - 200 MiB / second streaming throughput.

Increase the default db file size for LevelDB to 128 MiB instead so the flush
rate drops to about 1 flush / 2 seconds and the system no longer gets so
sluggish.

The db file size value chosen also matches the MAX_BLOCKFILE_SIZE file
size setting already used by the block storage.
2024-05-08 04:09:28 +00:00
Luke Dashjr
9160cc0b1f Add option dbfilesize to control LevelDB target ("max") file size 2024-05-08 04:04:07 +00:00
willcl-ark
1cc2de7e27 gui: fix misleading signmessage error with segwit
As described in #10542 (and numerous other places), message signing in
Bitcoin Core only supports message signing using P2PKH addresses, at
least until a new message-signing standard is agreed upon.

Therefore update the possibly-misleading error message presented to the
user in the GUI to detail more specifically the reason their message
cannot be signed, in the case that a non P2PKH address is entered.

Github-Pull: gui#819
Rebased-From: fb9f150759
2024-05-07 18:21:29 +00:00
nanlour
0fcceefe22
Fix #29767, set m_synced = true after Commit()
Github-Pull: #29776
Rebased-From: bbe82c116e
2024-04-26 21:05:02 +08:00
Antoine Poinsot
ae9a2ed40a
sign: don't assume we are parsing a sane Miniscript
The script provided for signature might be externally provided, for
instance by way of 'finalizepsbt'. Therefore the script might be
ill-crafted, so don't assume pubkeys are always 32 bytes.

Thanks to Niklas for finding this.

Github-Pull: #29853
Rebased-From: 4d8d21320e
2024-04-24 21:16:47 +08:00
MarcoFalke
a6a59cfebc
rpc: Reword SighashFromStr error message
Github-Pull: #29870
Rebased-From: fa6ab0d020
2024-04-24 20:57:09 +08:00
Luke Dashjr
f90a84d615 Bugfix: JSON-RPC request Content-Type is application/json 2024-04-24 02:38:39 +00:00
Matthew Zipkin
dabf896ea8 zmq: accept unix domain socket address for notifier
Based on Github-Pull: #27679
Based on: c87b0a0ff4
2024-04-24 02:09:26 +00:00
Matthew Zipkin
8300cf27f5 netbase: define ADDR_PREFIX_UNIX
Part of "extend Proxy class to wrap UNIX socket as well as TCP"
	Github-Pull: #27375
	Commit: a89c3f59dc
2024-04-24 02:09:26 +00:00
Luke Dashjr
d15b753382 Diff-minimise 2024-04-23 20:56:03 +00:00
Matthew Zipkin
f9e091fc85 blockstorage: do not flush block to disk if it is already there
test: ensure we can reindex from read-only block files now

Github-Pull: #27039
Rebased-From: dfcef536d0
2024-04-23 20:56:03 +00:00
Ava Chow
5204a1a601 psbt: Check non witness utxo outpoint early
A common issue that our fuzzers keep finding is that outpoints don't
exist in the non witness utxos. Instead of trying to track this down and
checking in various individual places, do the check early during
deserialization.

Github-Pull: #29855
Rebased-From: 9e13ccc50e
2024-04-21 19:17:38 +00:00
laanwj
7af5125276 net: Decrease nMaxIPs when learning from DNS seeds
Limit number of IPs learned from a single DNS seed to 32, to prevent the results from
one DNS seed from dominating AddrMan. Note that the number of results from a UDP DNS query is
bounded to 33 already, but it is possible for it to use TCP where a potentially enormous
number of results can be returned.

Closes #16070.

Github-Pull: #29850
Rebased-From: f2e3662e57
2024-04-21 19:08:22 +00:00
Luke Dashjr
c155102244 Bugfix: RPC: Return all warnings in get{blockchain,mining,network}info 2024-04-21 19:03:29 +00:00
MarcoFalke
9277793b4e
test: Fix failing univalue float test
Github-Pull: #29892
Rebased-From: fa4c69669e
2024-04-17 14:05:00 +01:00
dergoegge
897e5af58a
[rpc, bugfix] Enforce maximum value for setmocktime
Github-Pull: #29869
Rebased-From: c2e0489b71
2024-04-16 09:28:23 +01:00
Luke Dashjr
20e6e8dc80
Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.us
To avoid issues with DNS blacklisting, I've setup a separate domain for my DNS seed.

Github-Pull: #29691
Rebased-From: 4f273ab436
2024-04-16 09:28:22 +01:00
Pieter Wuille
5d381cfb6f
serfloat: improve/simplify tests
Github-Pull: #29192
Rebased-From: 6e873df347
2024-03-21 16:42:41 +00:00
Pieter Wuille
f4be4d7447
serfloat: do not test encode(bits)=bits anymore
Github-Pull: #29192
Rebased-From: b45f1f5658
2024-03-21 16:42:15 +00:00
Luke Dashjr
87471d26bf Bugfix: init: For first-run disk space check, advise user of correct pruned size rather than full blockchain size 2024-03-19 15:47:51 +00:00
Luke Dashjr
99632e59cd Bugfix: init: Correct conversion of AssumedBlockchainSize to use GB 2024-03-19 15:47:26 +00:00
Luke Dashjr
d1ed09a764 Bugfix: GUI: Help messages already have a trailing newline, so don't add an extra one 2024-03-15 00:38:33 +00:00
Lőrinc
2435c39a6c Reserve memory for ToLower/ToUpper conversions
Github-Pull: #29606
Rebased-From: 6f2f4a4d09
2024-03-14 22:57:13 +00:00
Luke Dashjr
58de91d9fe Bugfix: Move common/url to libbitcoin_util.a for now 2024-03-14 22:46:21 +00:00
Luke Dashjr
df57f56ad9 GUI: Intro: Have user choose assumevalid 2024-03-14 21:56:16 +00:00
Luke Dashjr
cda83e8ae1 GUI: Intro: Output a std::unique_ptr<Intro> from Intro::showIfNeeded 2024-03-14 18:25:23 +00:00
Luke Dashjr
9f35a5bd12 RPC/Blockchain: Demote loadtxoutset to hidden/debug-only for now (not supported on mainnet) 2024-03-14 00:26:34 +00:00
Luke Dashjr
29961a9421 RPC/Mempool: Avoid extra decrement of unsigned below 0 when building fee histogram 2024-03-10 19:04:47 +00:00
Luke Dashjr
dab9589e2d wallet: let ListWalletDir do not iterate trough our blocksdata.
When WalletDir == DataDir we would have iterate trough our own node files
to find wallets, that consumes time and could cause an unresponsive node.

Github-Pull: #19419
Rebased-From: c730c7a6b6eb9f2e5138e2874ca7c5c269086bf3
2024-03-10 19:03:12 +00:00
fanquake
55bd5d8015
Merge bitcoin/bitcoin#29561: Fixed seeds update for 27.0
7ab54397f8 seeds: Update testnet seeds (Ava Chow)
34a233b6d8 seeds: Update mainnet seeds (Ava Chow)
9701bc435f makeseeds: Check i2p seeds too (Ava Chow)
a8ec9eede4 makeseeds: Update PATTERN_AGENT (Ava Chow)

Pull request description:

  The ipv4 and ipv6 seeds are updated from sipa's crawler, as outlined in contrib/seeds/README.md. The onion and i2p seeds are pulled from my node's addrman using `getrawaddrman` and then a connection was made to each node to retrieve the current service flags, block height, and user agent string before filtering through makeseeds.py. The CJDNS nodes were not updated as my node is not connected to that network.

  makeseeds.py is also updated for more recent user agent strings as well as being able to handle i2p addresses.

  Also updated the testnet seeds.

ACKs for top commit:
  fanquake:
    ACK 7ab54397f8

Tree-SHA512: 5edba63d51116e5d9a8ae23561ba5a311f4df88c555c60b2d7a6066e63f8cdfd256be7dac9acea4b370879d0d3c3a4b55328c15de4284b5f0d86e6cac2e5ba9b
2024-03-06 14:43:58 +00:00
ishaanam
8e5778a9fb wallet, rpc: add anti-fee-sniping to send and sendall 2024-03-05 19:18:09 -05:00
fanquake
312f3381a2
fuzz: restrict fopencookie usage to Linux & FreeBSD
Should fix the GCC compilation portion of #29517:
https://github.com/bitcoin/bitcoin/issues/29517#issuecomment-1973573314.

See also:
https://www.gnu.org/software/gnulib/manual/html_node/fopencookie.html
but note that FreeBSD has supported this function since 11.x.
2024-03-05 21:18:44 +00:00
fanquake
11a1db8780
Merge bitcoin/bitcoin#29547: kernel: chainparams updates for 27.x
d9f30b021a kernel: chainparams updates for 27.x (fanquake)
1611aa1789 kernel: update chainTxData for 27.x (fanquake)
af78d31e71 kernel: update nMinimumChainWork & defaultAssumeValid for 27.x (fanquake)

Pull request description:

  Update chainparams pre `27.x` branch off.

  Note: Remember that some variance is expected in the m_assumed_* sizes.

ACKs for top commit:
  Sjors:
    ACK d9f30b021a
  glozow:
    ACK d9f30b021a (checked mainnet locally, checked testnet/signet on block explorers and sanity checked the numbers)
  instagibbs:
    ACK d9f30b021a

Tree-SHA512: 6ce65b964334b9d15fff4aa1af6d26fb3ef4eab50b8237fc2cda180230ae724a99d13c9f6b3c58105548d3520c0ca0810f354736132d11793d6c91ad3eeac4c7
2024-03-05 16:15:24 +00:00
Ava Chow
7ab54397f8 seeds: Update testnet seeds 2024-03-04 19:53:30 -05:00
Ava Chow
34a233b6d8 seeds: Update mainnet seeds 2024-03-04 19:53:24 -05:00
Luke Dashjr
36d61b8415 Bugfix: QA/fuzz: Add getblocklocations to RPC_COMMANDS_SAFE_FOR_FUZZING 2024-03-04 17:39:06 +00:00
Luke Dashjr
d71a059198 Bugfix: RPC/Blockchain: Correct getblocklocations return type
(array of objects, not array with named keys)
2024-03-04 17:39:06 +00:00
Luke Dashjr
63389a52a4 RPC/Blockchain: Bugfix: Correct getblocklocations example RPC method name 2024-03-04 17:39:06 +00:00
Luke Dashjr
e5f9e58ac3 Bugfix: RPC/blockchain: Hold cs_main for CBlockIndex access as needed to avoid races in getblocklocations 2024-03-04 17:39:06 +00:00
Roman Zeyde
2ee1991c7d RPC: Add getblocklocations call
This RPC allows the client to retrieve the file system locations
of the confirmed blocks and their undo data, to allow building
efficient indexes outside of Bitcoin Core.

An example usage is described here:
https://github.com/romanz/electrs/issues/308

By using the new RPC, it is possible to build an address-based
index taking ~24GB and a txindex taking ~6GB (as of Dec. 2020).
2024-03-04 17:39:06 +00:00
Luke Dashjr
003720ebd5 Allow acceptstalefeeestimates on all networks 2024-03-04 17:26:48 +00:00
fanquake
3329b35e09
Merge bitcoin/bitcoin#29546: qt: 27.0 translations update
632b69f79b qt: 27.0 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.

ACKs for top commit:
  stickies-v:
    ACK 632b69f79b , getting a zero-diff when running `update-translations.py` on fce53f132e

Tree-SHA512: 1e2823451e9192e60dec9d50e801fca4cdc621e6acabdc15dbd88cab1624e05bd56de9ac818a1ff91002d62e24c0bab0ef1eaad3fd3cc6ef6cd044989d39734f
2024-03-04 11:58:55 +00:00
fanquake
d9f30b021a
kernel: chainparams updates for 27.x 2024-03-04 10:56:27 +00:00
fanquake
1611aa1789
kernel: update chainTxData for 27.x 2024-03-04 10:56:27 +00:00
fanquake
af78d31e71
kernel: update nMinimumChainWork & defaultAssumeValid for 27.x 2024-03-04 10:56:27 +00:00
Hennadii Stepanov
776d48dd56
Merge bitcoin-core/gui#801: Fix nullptr clientModel access during shutdown
b7aa717cdd refactor: gui, simplify boost signals disconnection (furszy)
f3a612f901 gui: guard accessing a nullptr 'clientModel' (furszy)

Pull request description:

  Fixing #800.

  During shutdown, already queue events dispatched from the backend such
  'numConnectionsChanged' and 0networkActiveChanged' could try to access
  the clientModel object, which might not exist because we manually delete
  it inside 'BitcoinApplication::requestShutdown()'.

  This happen because boost does not clears the queued events when they arise
  concurrently with the signal disconnection (see https://www.boost.org/doc/libs/1_55_0/doc/html/signals2/thread-safety.html).
  From the docs:
  1) "Note that since we unlock the connection's mutex before executing its associated slot, it is possible a slot will still be executing after it has been disconnected by a [connection::disconnect](https://www.boost.org/doc/libs/1_55_0/doc/html/boost/signals2/connection.html#idp89761576-bb)(), if the disconnect was called concurrently with signal invocation."
  2)  "The fact that concurrent signal invocations use the same combiner object means you need to insure any custom combiner you write is thread-safe"

  So, we need to guard `clientModel` before accessing it at the handler side.

ACKs for top commit:
  hebasto:
    re-ACK b7aa717cdd

Tree-SHA512: f1a21d69248628f6a13556a9438c9e4ea9f0a3678aab09ddfe836e78e4eee405a6730d37d39f1445068ada3a110b655b619cf0e090fc2d0cdf99bed061364aeb
2024-03-04 10:15:43 +00:00
fanquake
e60804f121
Merge bitcoin/bitcoin#29524: p2p: Don't consider blocks mutated if they don't connect to known prev block
a1fbde0ef7 p2p: Don't consider blocks mutated if they don't connect to known prev block (Greg Sanders)

Pull request description:

  Followup to https://github.com/bitcoin/bitcoin/pull/29412 to revert some of the behavior change that was likely unintentional.

  Based on comments from https://github.com/bitcoin/bitcoin/pull/29412#discussion_r1507499192

ACKs for top commit:
  0xB10C:
    utACK a1fbde0ef7
  dergoegge:
    Code review ACK a1fbde0ef7
  Sjors:
    ACK a1fbde0ef7
  sr-gi:
    tACK a1fbde0ef7

Tree-SHA512: be6204c8cc57b271d55c1d02a5c77d03a37738d91cb5ac164f483b0bab3991c24679c5ff02fbaa52bf37ee625874b63f4c9f7b39ad6fd5f3a25386567a0942e4
2024-03-04 10:09:47 +00:00
Hennadii Stepanov
632b69f79b
qt: 27.0 translations update 2024-03-04 10:02:26 +00:00
fanquake
521693378b
build: move sha256_sse4 into libbitcoin_crypto_base
Followup to discussion in #29407.
Drops LIBBITCOIN_CRYPTO_SSE4.
2024-03-01 11:57:24 -05:00
fanquake
8da62a1041
Merge bitcoin/bitcoin#29263: serialization: c++20 endian/byteswap/clz modernization
86b7f28d6c serialization: use internal endian conversion functions (Cory Fields)
432b18ca8d serialization: detect byteswap builtins without autoconf tests (Cory Fields)
297367b3bb crypto: replace CountBits with std::bit_width (Cory Fields)
52f9bba889 crypto: replace non-standard CLZ builtins with c++20's bit_width (Cory Fields)

Pull request description:

  This replaces #28674, #29036, and #29057. Now ready for testing and review.

  Replaces platform-specific endian and byteswap functions. This is especially useful for kernel, as it means that our deep serialization code no longer requires bitcoin-config.h.

  I apologize for the size of the last commit, but it's hard to avoid making those changes at once.

  All platforms now use our internal functions rather than libc or platform-specific ones, with the exception of MSVC.

  Sadly, benchmarking showed that not all compilers are capable of detecting and optimizing byteswap functions, so compiler builtins are instead used where possible. However, they're now detected via macros rather than autoconf checks.

  This[ matches how libc++ implements std::byteswap for c++23](https://github.com/llvm/llvm-project/blob/main/libcxx/include/__bit/byteswap.h#L26).

  I suggest we move/rename `compat/endian.h`, but I left that out of this PR to avoid bikeshedding.

  #29057 pointed out some irregularities in benchmarks. After messing with various compilers and configs for a few weeks with these changes, I'm of the opinion that we can't win on every platform every time, so we should take the code that makes sense going forward. That said, if any real-world slowdowns are caused here, we should obviously investigate.

ACKs for top commit:
  maflcko:
    ACK 86b7f28d6c 📘
  fanquake:
    ACK 86b7f28d6c - we can finish pruning out the __builtin_clz* checks/usage once the minisketch code has been updated. This is more good cleanup pre-CMake & for the kernal.

Tree-SHA512: 715a32ec190c70505ffbce70bfe81fc7b6aa33e376b60292e801f60cf17025aabfcab4e8c53ebb2e28ffc5cf4c20b74fe3dd8548371ad772085c13aec8b7970e
2024-03-01 11:19:58 -05:00
fanquake
ae4165f7bc
Merge bitcoin/bitcoin#29495: fuzz: add target for local address stuff
25eab52389 fuzz: add target for local addresses (brunoerg)

Pull request description:

  This PR adds fuzz target for local address functions - (`AddLocal`, `RemoveLocal`, `SeenLocal`, `IsLocal`)

ACKs for top commit:
  dergoegge:
    ACK 25eab52389
  vasild:
    ACK 25eab52389

Tree-SHA512: 24faaab86dcd8835ba0e2d81fb6322a39a9266c7edf66415dbc4421754054f47efb6e0de4efdc7ea026b0686792658e86a526f7cf27cbc6cf9ed0c4aed376f97
2024-03-01 10:07:48 -05:00
Greg Sanders
a1fbde0ef7 p2p: Don't consider blocks mutated if they don't connect to known prev block 2024-02-29 16:38:58 -05:00
fanquake
dfc35c9934
Merge bitcoin/bitcoin#29407: build: remove confusing and inconsistent disable-asm option
f8a06f7a02 doc: remove references to disable-asm option now that it's gone (Cory Fields)
376f0f6d07 build: remove confusing and inconsistent disable-asm option (Cory Fields)

Pull request description:

  1. It didn't actually disable asm usage in our code. Regardless of the setting, asm is used in random.cpp and support/cleanse.cpp.
  2. The value wasn't forwarded to libsecp as a user might have reasonably expected.
  3. We now have the DISABLE_OPTIMIZED_SHA256 define which is what disable-asm actually did in practice.

  If there is any desire, we can hook DISABLE_OPTIMIZED_SHA256 up to a new configure option that actually does what it says.

  Additionally, this is one of the last (THE last?) remaining uses of autoconf defines in our crypto code. As such it seems like low-hanging fruit.

ACKs for top commit:
  fanquake:
    ACK f8a06f7a02

Tree-SHA512: 4a99c2130225acbe9dc7399ed572a04ca155cbfa3eef8178a632ba533017d264691e6482cceb1d8f9c5d768619d99a2466dea4b82b27b18b872bceae91b92fbb
2024-02-29 16:14:41 -05:00
fanquake
9057598605
Merge bitcoin/bitcoin#29516: test: removes unnecessary check from validation_tests
6ee3997d03 test: removes unnecessary check from validation_tests (Sergi Delgado Segura)

Pull request description:

  An unnecessary check was added to the block mutation tests in #29412 where IsBlockMutated is returning true for the invalid reasons: we try to check mutation via transaction duplication, but the merkle root is not updated before the check, therefore the check fails because the provided root and the computed root differ, but not because the block contains the same transaction twice.

  Notice that a proper check to test the duplication case is added a few lines later, so this check is just meaningless and can be removed. Check https://github.com/bitcoin/bitcoin/pull/29412#discussion_r1506490281 for context.

ACKs for top commit:
  maflcko:
    ACK 6ee3997d03
  dergoegge:
    utACK 6ee3997d03
  BrandonOdiwuor:
    utACK 6ee3997d03

Tree-SHA512: e4627668091dda5f589e4c15edac39dc84aabc9b34b8f7fadbf512beb7111d5477e1b69567a34b4a657e48ba66dfb864db5ff37c9bbe3ff24cd32931b2dd89e6
2024-02-29 14:37:49 -05:00
Cory Fields
376f0f6d07 build: remove confusing and inconsistent disable-asm option
1. It didn't actually disable asm usage in our code. Regardless of the setting,
   asm is used in random.cpp and support/cleanse.cpp.
2. The value wasn't forwarded to libsecp as a user might have reasonably
   expected.
3. We now have the DISABLE_OPTIMIZED_SHA256 define which is what disable-asm
   actually did in practice.

If there is any desire, we can hook DISABLE_OPTIMIZED_SHA256 up to a new
configure option that actually does what it says.
2024-02-29 19:05:45 +00:00
Ava Chow
22a5ccfb06
Merge bitcoin/bitcoin#29510: wallet: getrawchangeaddress and getnewaddress failures should not affect keypools for descriptor wallets
e073f1dfda test: make sure keypool sizes do not change on `getrawchangeaddress`/`getnewaddress` failures (UdjinM6)
367bb7a80c wallet: Avoid updating `ReserveDestination::nIndex` when `GetReservedDestination` fails (UdjinM6)

Pull request description:

  I think the expected behaviour of `getrawchangeaddress` and `getnewaddress` RPCs is that their failure should not affect keypool in any way. At least that's how legacy wallets work, you can confirm this behaviour by running `wallet_keypool.py --legacy-wallet` on master with e073f1dfda applied on top. However running `wallet_keypool.py --descriptors` on the same commit results in the following failure:
  ```
    File "/path/to/bitcoin/test/functional/test_framework/test_framework.py", line 131, in main
      self.run_test()
    File "/path/to/bitcoin/test/functional/wallet_keypool.py", line 114, in run_test
      assert_equal(kp_size_before, kp_size_after)
    File "/path/to/bitcoin/test/functional/test_framework/util.py", line 57, in assert_equal
      raise AssertionError("not(%s)" % " == ".join(str(arg) for arg in (thing1, thing2) + args))
  AssertionError: not([18, 24] == [19, 24])
  ```

  This happens because we pass `nIndex` (which is a class member) into `GetReservedDestination` and since it's passed by reference we get an updated value back, so `nIndex` won't be equal `-1` anymore, no matter if the function failed or succeeded. This means that `ReturnDestination` (called by dtor of `ReserveDestination`) will try to return something we did not actually reserve.

  The fix is to simply use a temporary variable instead of a class member and only update `nIndex` when `op_address` actually has value, basically do it the same way we do for other class members (`address` and `fInternal`) already.

ACKs for top commit:
  achow101:
    ACK e073f1dfda
  josibake:
    ACK e073f1dfda

Tree-SHA512: 1128288a60dd4d8f306ef6f7ac66cdfeae3c9cc35c66ecada2d78fa61ac759f2a757b70fc3976ba8b5081200942b58dfabc184c01ccf911af40ba8c145344651
2024-02-29 13:25:38 -05:00
furszy
b7aa717cdd
refactor: gui, simplify boost signals disconnection
Preventing dangling signals.
2024-02-29 14:40:01 -03:00
brunoerg
25eab52389 fuzz: add target for local addresses 2024-02-29 14:13:58 -03:00
Sergi Delgado Segura
6ee3997d03 test: removes unnecessary check from validation_tests
An unnecessary check was added to the block mutation tests
in #29412 where IsBlockMutated is returning true for the invalid
reasons: we try to check mutation via transaction duplication,
but the merkle root is not updated before the check, therefore
the check fails because the provided root and the computed root
differ, but not because the block contains the same transaction twice.

The check is meaningless so it can be removed.
2024-02-29 09:54:47 -05:00
Ava Chow
2649e655b9
Merge bitcoin/bitcoin#29412: p2p: Don't process mutated blocks
d8087adc7e [test] IsBlockMutated unit tests (dergoegge)
1ed2c98297 Add transaction_identifier::size to allow Span conversion (dergoegge)
1ec6bbeb8d [validation] Cache merkle root and witness commitment checks (dergoegge)
5bf4f5ba32 [test] Add regression test for #27608 (dergoegge)
49257c0304 [net processing] Don't process mutated blocks (dergoegge)
2d8495e080 [validation] Merkle root malleation should be caught by IsBlockMutated (dergoegge)
66abce1d98 [validation] Introduce IsBlockMutated (dergoegge)
e7669e1343 [refactor] Cleanup merkle root checks (dergoegge)
95bddb930a [validation] Isolate merkle root checks (dergoegge)

Pull request description:

  This PR proposes to check for mutated blocks early as a defense-in-depth mitigation against attacks leveraging mutated blocks.

  We introduce `IsBlockMutated` which catches all known forms of block malleation and use it to do an early mutation check whenever we receive a `block` message.

  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 for which a regression test is included in this PR).

ACKs for top commit:
  achow101:
    ACK d8087adc7e
  maflcko:
    ACK d8087adc7e 🏄
  fjahr:
    Code review ACK d8087adc7e
  sr-gi:
    Code review ACK d8087adc7e

Tree-SHA512: 618ff4ea7f168e10f07504d3651290efbb1bb2ab3b838ffff3527c028caf6c52dedad18d04d3dbc627977479710930e200f2dfae18a08f627efe7e64a57e535f
2024-02-28 17:54:49 -05:00
fanquake
dfbad09c60
Merge bitcoin/bitcoin#29489: test: Remove Windows-specific code from system_tests/run_command
51bc1c7126 test: Remove Windows-specific code from `system_tests/run_command` (Hennadii Stepanov)

Pull request description:

  The removed code has been dead since https://github.com/bitcoin/bitcoin/pull/28967.

  Required as a precondition for replacing Boost.Process with [cpp-subprocess](https://github.com/bitcoin/bitcoin/pull/28981) to make diff for this code meaningful and reviewable.

  The plan is to reintroduce Windows-specific code in this test simultaneously with enabling Windows support in cpp-subprocess.

ACKs for top commit:
  Sjors:
    utACK 51bc1c7126
  theStack:
    Code-review ACK 51bc1c7126

Tree-SHA512: 0e3875c4dc20564332555633daf2227223b10dc3d052557635eced2734575d1e0252fb19e46ea6e6c47a15c51c345f70b6d437e33435abcd0e4fcf29edb50887
2024-02-28 17:30:08 -05:00
fanquake
d752831e64
Merge bitcoin/bitcoin#29493: subtree: update crc32c subtree
5d45552fd4 Squashed 'src/crc32c/' changes from 0bac72c455..b60d2b7334 (fanquake)

Pull request description:

  Update the crc32c subtree. Includes:
  * https://github.com/bitcoin-core/crc32c-subtree/pull/6

  Which fixes #29178.

ACKs for top commit:
  hebasto:
    ACK 359a8d9846.
  theuni:
    ACK 359a8d9846
  dergoegge:
    ACK 359a8d9846

Tree-SHA512: 2cec81a34ad26bbbc298aea5daffa41e56114d31cc2eb5fe486f46a77c3467bba22bdeca1c52ae97220e119d98818304272fc6337442af55282accabcd4c5833
2024-02-28 17:23:11 -05:00
furszy
f3a612f901
gui: guard accessing a nullptr 'clientModel'
During shutdown, already queue events dispatched from the backend such
'numConnectionsChanged' and 'networkActiveChanged' could try to access
the clientModel object, which might not exist because we manually delete
it inside 'BitcoinApplication::requestShutdown()'.
2024-02-28 17:58:47 -03:00
Cory Fields
86b7f28d6c serialization: use internal endian conversion functions
These replace our platform-specific mess in favor of c++20 endian detection
via std::endian and internal byteswap functions when necessary.

They no longer rely on autoconf detection.
2024-02-28 13:42:38 +00:00
Cory Fields
432b18ca8d serialization: detect byteswap builtins without autoconf tests
Rather than a complicated set of tests to decide which bswap functions to
use, always prefer the compiler built-ins when available.

These builtins and fallbacks can all be removed once we're using c++23, which
adds std::byteswap.
2024-02-28 13:42:38 +00:00
UdjinM6
367bb7a80c
wallet: Avoid updating ReserveDestination::nIndex when GetReservedDestination fails 2024-02-28 13:00:00 +03:00
Cory Fields
ad7584d8b6 serialization: replace char-is-int8_t autoconf detection with c++20 concept
This removes the only remaining autoconf macro in our serialization code,
so it can now be used trivially and safely out-of-tree.
2024-02-27 19:03:26 +00:00
fanquake
359a8d9846
Update crc32c subtree to latest upstream master 2024-02-27 18:28:19 +00:00
fanquake
5d45552fd4 Squashed 'src/crc32c/' changes from 0bac72c455..b60d2b7334
b60d2b7334 Merge bitcoin-core/crc32c-subtree#6: Fix UBSan "misaligned-pointer-use" warning on aarch64
1ac401e32b Fix UBSan "misaligned-pointer-use" warning on aarch64

git-subtree-dir: src/crc32c
git-subtree-split: b60d2b733406cc64025095c6c2cb3933e222b529
2024-02-27 18:28:19 +00:00
Hennadii Stepanov
51bc1c7126
test: Remove Windows-specific code from system_tests/run_command
This code has been dead since https://github.com/bitcoin/bitcoin/pull/28967.

Required as a precondition for replacing Boost.Process with
cpp-subprocess to make diff for this code meaningful and reviewable.

The plan is to reintroduce Windows-specific code in this test
simultaneously with enabling Windows support in cpp-subprocess.
2024-02-27 15:59:05 +00:00
dergoegge
d8087adc7e [test] IsBlockMutated unit tests 2024-02-27 14:19:15 +00:00
dergoegge
1ed2c98297 Add transaction_identifier::size to allow Span conversion 2024-02-27 14:19:15 +00:00
dergoegge
1ec6bbeb8d [validation] Cache merkle root and witness commitment checks
Slight performance improvement by avoiding duplicate work.
2024-02-27 14:19:15 +00:00
dergoegge
49257c0304 [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).
2024-02-27 14:19:15 +00:00
dergoegge
2d8495e080 [validation] Merkle root malleation should be caught by IsBlockMutated 2024-02-27 14:19:15 +00:00
dergoegge
66abce1d98 [validation] Introduce IsBlockMutated 2024-02-27 14:19:15 +00:00
dergoegge
e7669e1343 [refactor] Cleanup merkle root checks 2024-02-27 14:19:14 +00:00
dergoegge
95bddb930a [validation] Isolate merkle root checks 2024-02-27 14:17:32 +00:00
fanquake
4d7d7fd123
Merge bitcoin/bitcoin#29357: test: Drop x modifier in fsbridge::fopen call for MinGW builds
d2fe90571e test: Drop `x` modifier in `fsbridge::fopen` call for mingw builds (Hennadii Stepanov)

Pull request description:

  The MinGW-w64 toolchain links executables to the old msvcrt C Runtime Library that does not support the `x` modifier for the [`_wfopen()`](https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-170) function.

  Fixes https://github.com/bitcoin/bitcoin/issues/29014.

ACKs for top commit:
  maflcko:
    ACK d2fe90571e
  fanquake:
    ACK d2fe90571e - the plan here should still be to migrate to the newer windows runtime.

Tree-SHA512: 0269b66531e58c093ecda3a3e355a20ee8274e165d7e010f8f125881b3c8d4cfe801abdca4605d81efd3b2dbe9a81896968971f6f53da7f6c6093b76b47c5bc9
2024-02-26 16:15:24 +00:00
Cory Fields
297367b3bb crypto: replace CountBits with std::bit_width
bit_width is a drop-in replacement with an exact meaning in c++, so there is
no need to continue testing/fuzzing/benchmarking.
2024-02-26 16:13:12 +00:00
Cory Fields
52f9bba889 crypto: replace non-standard CLZ builtins with c++20's bit_width
Also some header cleanups.
2024-02-26 16:13:12 +00:00
Hennadii Stepanov
d2fe90571e
test: Drop x modifier in fsbridge::fopen call for mingw builds
The MinGW-w64 toolchain links executables to the old msvcrt C Runtime
Library that does not support the `x` modifier for the _wfopen()
function.
2024-02-26 14:47:31 +00:00
Hennadii Stepanov
88468a8afc
Drop log category in SeedStartup
This `LogPrint(BCLog::RAND, ...)` is never logged because the
`SeedStartup` function is called at a very early stage, such as during
the instantiation of the static `CSignatureCache` object, before any log
categories are added. This change addresses this behavior.
2024-02-26 14:40:47 +00:00
fanquake
19b7f2b908
Merge bitcoin/bitcoin#29471: doc: Fix CI-detected codespell warnings
b03b20685a Fix CI-detected codespell warnings (Lőrinc)

Pull request description:

  Split out the typo fixes encountered in https://github.com/bitcoin/bitcoin/pull/29458 to a separate PR.

ACKs for top commit:
  maflcko:
    ACK b03b20685a

Tree-SHA512: 99b6fac01ba2ae6e6de9c50d2b481387899844a4b3a77d544c7b8afe7cfd25251a982329688d4739cde8b98ad35afcfd49be7c7cc3dad9bdff1d5915861a206d
2024-02-26 11:14:46 +00:00
fanquake
ba90b058bd
Merge bitcoin/bitcoin#29345: rpc: Do not wait for headers inside loadtxoutset
faa30a4c56 rpc: Do not wait for headers inside loadtxoutset (MarcoFalke)

Pull request description:

  While the `loadtxoutset` default 10 minute timeout is convenient when it is sufficient, it may cause hassle where it is not. For example:

  * When P2P connections are missing, it seems better to abort early than wait for the timeout.
  * When the 10 minute timeout is not sufficient, the RPC will have to be called again, so a check or loop is needed outside the RPC either way. So might as well remove the loop inside the RPC.

ACKs for top commit:
  fjahr:
    ACK faa30a4c56
  theStack:
    Code-review ACK faa30a4c56
  pablomartin4btc:
    tACK faa30a4c56
  TheCharlatan:
    ACK faa30a4c56

Tree-SHA512: 9167c7d8b2889bb3fd369de4acd2cc4d24a2fe225018d82bd9568ecd737093f6e19be7cc62815b574137b61076a6f773c29bff75398991b5cd702423aab2322b
2024-02-26 11:11:25 +00:00
fanquake
eaede27655
Merge bitcoin/bitcoin#29408: lint: Check for missing bitcoin-config.h includes
fa58ae74ea refactor: Add missing include for USE_BDB, USE_SQLITE to bench/wallet_ismine.cpp (MarcoFalke)
fa31908ea8 lint: Check for missing or redundant bitcoin-config.h includes (MarcoFalke)
fa63b0e351 lint: Make lint error easier to spot in output (MarcoFalke)
fa770fd368 doc: Add missing RUST_BACKTRACE=1 (MarcoFalke)
fa10051267 lint: Add get_subtrees() helper (MarcoFalke)

Pull request description:

  Missing `bitcoin-config.h` includes are problematic, because the build could silently pass, but produce an unintended result. For example, a slower fallback algorithm could be picked, even though `bitcoin-config.h` indicates that a faster feature is available and should be used.

  As the build succeeds silently, this problem is not possible to detect with iwyu.

  Thus, fix this by using a linter based on grepping the source code.

ACKs for top commit:
  theuni:
    Weak ACK fa58ae74ea.
  TheCharlatan:
    ACK fa58ae74ea
  hebasto:
    ACK fa58ae74ea, tested on Ubuntu 23.10 -- it catches bugs properly. I didn't review rust code changes.

Tree-SHA512: cf4346f81ea5b8c215da6004cb2403d1aaf569589613c305d8ba00329b82b3841da94fe1a69815ce15f2edecbef9b031758ec9b6433564976190e3cf91ec8181
2024-02-26 10:32:28 +00:00
Lőrinc
b03b20685a Fix CI-detected codespell warnings 2024-02-23 23:01:07 +01:00
Murch
9dae3b970a [fuzz] Avoid partial negative result 2024-02-21 15:49:05 -05:00
Luke Dashjr
a00bc6f395 RPC/Wallet: Add "use_txids" to output of getaddressinfo 2024-02-21 15:38:20 +00:00
Luke Dashjr
022887d933 Wallet: Add fairly-efficient [negative] check that an address is not known to be used 2024-02-21 15:38:20 +00:00
Luke Dashjr
fc7954a148 Wallet: Keep track of what addresses are used in wallet transactions (memory only) 2024-02-21 15:38:19 +00:00