0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-10 10:52:31 -05:00
Commit graph

26766 commits

Author SHA1 Message Date
Hennadii Stepanov
809a2f1929
cmake: Build bitcoin_util static library 2024-08-16 19:27:38 +01:00
Hennadii Stepanov
0a9a521a70
cmake: Build bitcoin_crypto library 2024-08-16 19:27:38 +01:00
Hennadii Stepanov
958971f476
cmake: Build univalue static library 2024-08-16 19:27:38 +01:00
Hennadii Stepanov
752747fda8
cmake: Generate obj/build.h header 2024-08-16 19:27:38 +01:00
Hennadii Stepanov
db7a198f29
cmake: Build secp256k1 subtree 2024-08-16 19:27:37 +01:00
Hennadii Stepanov
27d687fc1f
cmake: Add config/bitcoin-config.h support 2024-08-16 19:27:36 +01:00
glozow
ee367170cb
Merge bitcoin/bitcoin#30621: wallet: fix blank legacy detection
6ed424f2db wallet: fix, detect blank legacy wallets in IsLegacy (furszy)

Pull request description:

  Blank legacy wallets do not have active SPKM. They can only be
  detected by checking the descriptors' flag or the db format.

  This enables the migration of blank legacy wallets in the GUI.

  To test this:
  1) Create a blank legacy wallet.
  2) Try to migrate it using the GUI's toolbar "Migrate Wallet" button.
      -> In master: The button will be disabled because `CWallet::IsLegacy()` returns false for blank legacy wallet.
      -> In this PR: the button will be enabled, allowing the migration of legacy wallets.

ACKs for top commit:
  achow101:
    ACK 6ed424f2db
  tdb3:
    ACK 6ed424f2db
  glozow:
    ACK 6ed424f2db

Tree-SHA512: c06c4c4c2e546ccb033287b9aa3aee4ca36b47aeb2fac6fbed5de774b65caef9c818fc8dfdaac6ce78839b2d5d642a5632a5b44c5e889ea169ced80ed50501a7
2024-08-16 16:54:05 +01:00
Ava Chow
99ecb9a630
Merge bitcoin/bitcoin#30659: wallet: fix UnloadWallet thread safety assumptions
f550a8e035 Rename ReleaseWallet to FlushAndDeleteWallet (furszy)
64e736d79e wallet: WaitForDeleteWallet, do not expect thread safety (Ryan Ofsky)
8872b4a6ca wallet: rename UnloadWallet to WaitForDeleteWallet (furszy)
5d15485aaf wallet: unload, notify GUI as soon as possible (furszy)

Pull request description:

  Coming from #29073.

  Applied ryanofsky suggested changes on https://github.com/bitcoin/bitcoin/issues/29073#issuecomment-2274237242 with few modifications coming from https://github.com/bitcoin/bitcoin/pull/18338#issuecomment-605060348.

  The only point I did not tackle from https://github.com/bitcoin/bitcoin/pull/18338#issuecomment-605060348 is:

  > * Move log print and flush out of ReleaseWallet into CWallet destructor

  Because it would mean every `CWallet` object would flush data to disk during destruction. Which is not necessary for wallet tool utilities and unit tests.

ACKs for top commit:
  achow101:
    ACK f550a8e035
  ryanofsky:
    Code review ACK f550a8e035. Just a simple rename since last review
  ismaelsadeeq:
    Re-ACK f550a8e035

Tree-SHA512: e2eb69bf36883c514f601f4838ae6a41113996b9559abf8dc2b46e16bbcdad401195ac0f2b9d1fb55a10e78bb8ea9953788a168c80474e3f101350d208cb3bd2
2024-08-15 13:22:34 -04:00
furszy
f550a8e035
Rename ReleaseWallet to FlushAndDeleteWallet
To better describe the function's behavior.
And add wallet name to logprint.
2024-08-15 11:54:13 -03:00
Ryan Ofsky
64e736d79e
wallet: WaitForDeleteWallet, do not expect thread safety
Multiple threads could try to delete the wallet at the same time.
2024-08-14 16:14:54 -03:00
furszy
8872b4a6ca
wallet: rename UnloadWallet to WaitForDeleteWallet
And update function's documentation.
2024-08-14 16:12:18 -03:00
furszy
5d15485aaf
wallet: unload, notify GUI as soon as possible
Releases wallet shared pointers prior to doing the
final settings update and prevent GUI races trying
to access a wallet that is no longer loaded.
2024-08-14 16:12:18 -03:00
Ava Chow
0a379a129b
Merge bitcoin/bitcoin#28553: validation: assumeutxo params mainnet
1610643c8b chainparams: add mainnet assumeutxo param at height 840_000 (Sjors Provoost)

Pull request description:

  This adds snapshot parameters for mainnet block 840,000.

  You can generate the snapshot yourself using `./contrib/devtools/utxo_snapshot.sh` or download my torrent:
  * torrent: `magnet:?xt=urn:btih:596c26cc709e213fdfec997183ff67067241440c&dn=utxo-840000.dat&tr=udp%3A%2F%2Ftracker.bitcoin.sprovoost.nl%3A6969`

  It would be a good idea to test:
  1. That you can produce the same snapshot file, sha256 sum:

  ```
  dc4bb43d58d6a25e91eae93eb052d72e3318bd98ec62a5d0c11817cefbba177b utxo-840000.dat
  ```

  2. That the snapshot works

ACKs for top commit:
  fjahr:
    re-ACK 1610643c8b
  achow101:
    ACK 1610643c8b
  theStack:
    Tested ACK 1610643c8b
  mzumsande:
    tested ACK 1610643c8b
  willcl-ark:
    tACK 1610643c8b

Tree-SHA512: 581d8e86379bb044324f04f8559dd0a8946b6e2b145d5f25b38727b30b8cf13d6ac3c8777ff06554d3cf1a072809f7b5fbd693239868578f25dceafe5ba5f57c
2024-08-14 12:16:28 -04:00
Ava Chow
0e42c1b6c5
Merge bitcoin/bitcoin#30648: doc: Deduplicate list of possible chain strings in RPC help texts
9b29755520 Deduplicate list of chain strings in RPC help texts (Martin Saposnic)

Pull request description:

  As mentioned in issue https://github.com/bitcoin/bitcoin/issues/30645:

  Many command line parameter and RPC help texts currently contain the list of chain/network names hardcoded ("main, test, testnet4, signet, regtest"), which is error-prone as it can easily happen to miss an instance if the list ever changes again.

  This PR deduplicates the list of possible chain/network strings in RPC/parameter help texts, and it creates a macro `LIST_CHAIN_NAMES` in src/chainparamsbase.h. In the future, there is only 1 place where that list of possible values lives, so maintainability is improved and errors are avoided.

  All three places where this change impacts:

  ```
  ./bitcoin-cli --help
  ./bitcoin-cli help getblockchaininfo
  ./bitcoin-cli help getmininginfo
  ```

  They all return the correct string `"main, test, testnet4, signet, regtest"`

  See https://github.com/bitcoin/bitcoin/pull/30642#discussion_r1714711575

ACKs for top commit:
  maflcko:
    lgtm ACK 9b29755520
  achow101:
    ACK 9b29755520
  MarnixCroes:
    ACK 9b29755520
  theStack:
    ACK 9b29755520
  danielabrozzoni:
    ACK 9b29755520

Tree-SHA512: 1e961bcbe40b0f17a87a2437eb4ba1bb89468fd1b5a39599d72a00ef75cb4009e7d2f05d0a621bb904fecf681c55b8a219fcfe4d44d5d27f27cdda20882b1323
2024-08-14 12:01:55 -04:00
Hennadii Stepanov
770b0348c0
qt: Update translation source file for v28.0 string freeze
The diff is produced by running `make -C src translate`.
2024-08-14 14:14:10 +01:00
Hennadii Stepanov
e682e7db7e
Merge bitcoin-core/gui#824: Migrate legacy wallets that are not loaded
8f2522d242 gui: Use menu for wallet migration (Ava Chow)
d56a450bf5 gui: Use wallet name for wallet migration rather than WalletModel (Ava Chow)
c3918583dd gui: don't remove wallet manually before migration (furszy)
bfba63880f gui: Consolidate wallet display name to GUIUtil function (Ava Chow)
28fc562f26 wallet, interfaces: Include database format in listWalletDir (Ava Chow)

Pull request description:

  Currently the Migrate Wallet menu item can only be used to migrate the currently loaded wallet. This is not suitable for the future when legacy wallets can no longer be loaded at all, but should still be able to be migrated. This PR changes that menu item into a menu list like Open Wallet and lets users migrate any legacy wallet in their wallet directory regardless of the wallets loaded.

  One issue I ran into was dealing with encrypted wallets. Ideally, we would detect whether a wallet is encrypted, and prompt the user for their passphrase at that time. However, that's actually difficult to do in the GUI since migration will unload the wallet if it was already loaded, and reload it without connecting it to any signals or interfaces. Only then can it detect whether a wallet is encrypted, but then there is no `WalletModel` or even an `interfaces::Wallet` that the GUI could use to unlock it via a callback.

  To deal with this, I've opted to just add a button to the migration dialog box that has the user enter their passphrase first, along with instructional text to use that button if their wallet was encrypted. If the user enters the wrong passphrase or clicked the other button that does not prompt for the passphrase, migration will fail with a message indicating that the passphrase was incorrect.

ACKs for top commit:
  hebasto:
    ACK 8f2522d242.
  furszy:
    ACK 8f2522d

Tree-SHA512: a0e3b70dbfcacb89617956510ebcea94cad8617a987c68fe39fa16ac1721190b7cf7afc156c39b9032920cfb67b5d4ca28791681f5021d92d16acc691387afa1
2024-08-14 14:09:35 +01:00
Ava Chow
8f2522d242 gui: Use menu for wallet migration
Once legacy wallets can no longer be loaded, we need to be able to
migrate them without loading. Thus we should use a menu that lists the
wallets in the wallet directory instead of an action which migrates the
currently loaded wallet.
2024-08-13 19:18:11 -04:00
Martin Saposnic
9b29755520
Deduplicate list of chain strings in RPC help texts 2024-08-13 14:00:33 -03:00
Ava Chow
d56a450bf5 gui: Use wallet name for wallet migration rather than WalletModel
To prepare for migrating wallets that are not loaded, when migration
occurs in the GUI, it should not rely on a WalletModel existing.

Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
2024-08-13 11:25:38 -04:00
furszy
c3918583dd gui: don't remove wallet manually before migration 2024-08-13 11:25:38 -04:00
Ava Chow
bfba63880f gui: Consolidate wallet display name to GUIUtil function
Instead of having the code for the wallet display name being copy and
pasted, use a GUIUtil function to get that for us.
2024-08-13 11:25:38 -04:00
Ava Chow
28fc562f26 wallet, interfaces: Include database format in listWalletDir 2024-08-13 11:25:38 -04:00
glozow
1a41e63575
Merge bitcoin/bitcoin#30642: doc: add missing "testnet4" network string in RPC/init help texts
7015300455 doc: add missing "testnet4" network string in RPC/init help texts (Sebastian Falbesoner)

Pull request description:

  The following bitcoind parameters / RPC calls still missed the "testnet4" network string:
      - `-chain=` parameter
      - `getblockchaininfo` RPC, `"chain"` result
      - `getmininginfo` RPC, `"chain"` result

  The occurences were found via `$ git grep \".*main.*test.*\"`.

ACKs for top commit:
  maflcko:
    review ACK 7015300455
  glozow:
    ACK 7015300455
  tdb3:
    ACK 7015300455
  BrandonOdiwuor:
    ACK 7015300455
  danielabrozzoni:
    ACK 7015300455

Tree-SHA512: 99bf5c2b4cf28651feaff2fc7d4669961012dfa8379d8522251540ae1b8fc77d1761b75395903b527580530f42a3c1fd2dd2d8dba4ffbc9b6e55cb357c3a271b
2024-08-13 16:01:48 +01:00
glozow
7583eac43c
Merge bitcoin/bitcoin#30617: net: Clarify that m_addr_local is only set once
fa6fe43207 net: Clarify that m_addr_local is only set once (MarcoFalke)

Pull request description:

  The function is supposed to be only called once when the version msg arrives (a single time). Calling it twice would be an internal logic bug. However, the `LogError` in this function has many issues:

  * If the error happens in tests, as is the case for the buggy fuzz test, it will go unnoticed
  * It is dead code, unless a bug is introduced to execute it

  Fix all issues by using `Assume(!m_addr_local.IsValid())` instead. Idea taken from https://github.com/bitcoin/bitcoin/pull/30364#discussion_r1680530382

ACKs for top commit:
  achow101:
    ACK fa6fe43207
  mzumsande:
    utACK fa6fe43207
  glozow:
    ACK fa6fe43207

Tree-SHA512: 8c1e8c524768f4f36cc50110ae54ee423e057a963ff78f736f3bf92df1ce5af28e3e0149153780897944e1d5c22ddbca9dac9865d9f4d44afffa152bc8559405
2024-08-13 10:19:19 +01:00
furszy
6ed424f2db
wallet: fix, detect blank legacy wallets in IsLegacy
Blank legacy wallets do not have active SPKM. They can
only be detected by checking the descriptors' flag or
the db format.

This enables the migration of blank legacy wallets in
the GUI.
2024-08-12 18:14:35 -03:00
Sebastian Falbesoner
7015300455 doc: add missing "testnet4" network string in RPC/init help texts
The following bitcoind parameters / RPC calls missed the "testnet4"
network string:
    - `-chain=` parameter
    - `getblockchaininfo` RPC, "chain" result
    - `getmininginfo` RPC, "chain" result
2024-08-12 23:00:47 +02:00
Ava Chow
34ea7508d4
Merge bitcoin/bitcoin#30326: optimization: Reduce cache lookups in CCoinsViewCache::FetchCoin
204ca67bba Reduce cache lookups in CCoinsViewCache::FetchCoin (Lőrinc)

Pull request description:

  Enhanced efficiency and readability of `CCoinsViewCache::FetchCoin` by replacing separate `find()` and `emplace()` calls with a single `try_emplace()`, reducing map lookups and potential insertions.

  `AssembleBlock` shows `FetchCoin` as one of its bottlenecks:
  <img src="https://github.com/bitcoin/bitcoin/assets/1841944/79c7f480-aac2-46da-9ac9-526a02a8eafa">

  These changes result in a modest performance improvement:

  >  ./src/bench/bench_bitcoin --filter='AssembleBlock' --min-time=10000

  before:
  |               ns/op |                op/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |          156,160.70 |            6,403.66 |    0.6% |     10.91 | `AssembleBlock`

  after:
  |               ns/op |                op/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |          152,971.97 |            6,537.15 |    0.2% |     10.95 | `AssembleBlock`

  Further benchmarks: https://github.com/bitcoin/bitcoin/pull/30326#issuecomment-2188378721

ACKs for top commit:
  sipa:
    utACK 204ca67bba
  achow101:
    ACK 204ca67bba
  andrewtoth:
    re-ACK 204ca67bba

Tree-SHA512: 65743a5d4edd442672a59d7b3de38fe197c61270a5c8df65712413904559f360fc58b512234558c7e5169ffb4dda3b2d2f7ded92ad5b04ca999828986b251066
2024-08-12 16:16:58 -04:00
Ava Chow
ee57737bd6
Merge bitcoin/bitcoin#28209: fuzz: a target for the block index database
86b38529d5 qa: a fuzz target for the block index database (Antoine Poinsot)

Pull request description:

  This introduces a small fuzz target for `CBlockTreeDB` which asserts a few invariants by using an in-memory LevelDb.

ACKs for top commit:
  achow101:
    ACK 86b38529d5
  TheCharlatan:
    Re-ACK 86b38529d5
  maflcko:
    review ACK 86b38529d5 🥒
  brunoerg:
    utACK 86b38529d5

Tree-SHA512: ab75b4ae1c7e0a4b15f8a6ceffdf509fbc79833e6ea073ecef68558d53b83663d1b30362aaa2d77c22b8890a572f5b1d4b1c5abbca483c8c8f9b1fb5b276a59a
2024-08-12 16:06:38 -04:00
Ava Chow
5c5a298f6d
Merge bitcoin/bitcoin#30563: fuzz: improve scriptpubkeyman target
401cc4ec70 fuzz: improve scriptpubkeyman target (brunoerg)

Pull request description:

  Fixes #30541

  This PR aims to improve `scriptpubkeyman` target to avoid timeouts. The input provided in #30541 takes too much time to run because it basically calls only `MarkUnusedAddresses` (300 times * number of spks). The following changes were made to improve it:

  - Reduce keypool size.
  - When calling `MarkUnusedAddresses`, do it with one of the spks per iteration.
  - Remove the specific `AddDescriptorKey` call since it is already covered with `AddWalletDescriptor`.
  - Limit number of iterations to a reasonable value.

ACKs for top commit:
  maflcko:
    lgtm ACK 401cc4ec70
  achow101:
    ACK 401cc4ec70

Tree-SHA512: 941812bc6d991dd03675a2974ce1b839494ca7f6e6d8a22c689d4bf4fed2dac5491246998f19cb15dbff516fdd8eeda27e7628c3206d45f57dc292bc05624a5c
2024-08-12 14:50:00 -04:00
Hennadii Stepanov
1873e4116f
Merge bitcoin-core/gui#831: GUIUtil::brintToFront workaround for Wayland
15aa7d0236 gui, qt: brintToFront workaround for Wayland (pablomartin4btc)

Pull request description:

  There are known issues around handling windows focus in `Wayland` ([this one specific](https://bugs.kde.org/show_bug.cgi?id=462574) in KDE but also in [gnome](https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/730)).

  The idea is that the workaround will be executed if `bitcoin-qt` is running using `Wayland` platform (e.g.: `QT_QPA_PLATFORM=wayland ./src/qt/bitcoin-qt -regtest`), since the workaround behaviour looks like re-opening the window again (which I tried to fix by moving the window to the original position and/ or re-setting the original geometry without success) while in `X11` (not sure in Mac) the current `GUIUtil::brintToFront` actually sets the focus to the desired window, keeping its original position as expected, and I didn't want to change that (`X11` behaviour).

  The solution was [initially discussed](https://github.com/bitcoin-core/gui/pull/817#issuecomment-2256158902) with hebasto in #817.

ACKs for top commit:
  hebasto:
    ACK 15aa7d0236.

Tree-SHA512: 141d6cc4a618026e551627b9f4cc284285980db02a54a7b19c7de91e8c5adccf0c1d67380625146b5413e58c59f39c9e944ed5ba68cb8644f67647518918b6f7
2024-08-12 17:18:59 +01:00
glozow
b21ba081be
Merge bitcoin/bitcoin#30265: wallet: Fix listwalletdir listing of migrated default wallets and generated backup files
6b2dcba076 wallet: List sqlite wallets with empty string name (Ava Chow)
3ddbdd1815 wallet: Ignore .bak files when listing wallet files (Ava Chow)

Pull request description:

  When the default wallet is migrated, we do not rename the wallet so we end up having a descriptor wallet with the empty string as its name and the wallet.dat file in the root of the walletdir. This is supposed to be an unsupported configuration and there is no other way to achieve this (other than file copying), but the wallet loading code does not disallow loading such wallets. However `listwalletdir` does not currently list the default wallet if it is sqlite. This is confusing to users, so change `listwalletdir` to include these wallets.

  Additionally, the migration of the default wallet, and of any plain wallet files in the walletdir, produces a backup file in the walletdir itself. Since these backups are a BDB file, `listwalletdir` will detect them as being another wallet that we could open, but this is erroneous and could lead to confusion and potentially funds loss if both the backup and the migrated wallet are in use simultaneously. To reduce the likelihood of this issue, don't list these wallets in `listwalletdir`.

  ***

  Possibly we could have more stringent checks on loading to resolve these issues, but I'm concerned that that will just confuse users and gratuitously break things that already worked.

  Since the original intent was to disallow default wallets for sqlite/descriptors, a possible alternative would be to prevent people from loading such wallets and change migration to rename those wallets. However, given that this behavior with migrating default wallets has existed since default wallet migration was fixed, I think that making such a change would be confusing and break things for no good reason. Although perhaps we should still do the renaming.

  For the backups, we could also change loading to refuse to load any wallet named with `.bak` (or `.legacy.bak`) as such wallets can still be loaded by giving the path to them directly, which some users may do to "restore" the backup. However restricting what can be loaded based on filename seems a little heavyhanded. It wouldn't be funds loss though since the correct way to restore the backup is with `restorewallet`.

ACKs for top commit:
  fjahr:
    Code review ACK 6b2dcba076
  furszy:
    Code ACK  6b2dcba076
  glozow:
    ACK 6b2dcba076

Tree-SHA512: 0b033f6ed55830f8a054afea3fb2cf1fa82a94040053ebfaf123bda36c99f45d3f01a2aec4ed02fed9c61bb3d320b047ed892d7f6644b5a356a7bc5974b10cff
2024-08-12 15:58:07 +01:00
merge-script
012baa440c
Merge bitcoin/bitcoin#30633: Fixes for GCC 15 compatibility
055bc05792 policy/feerate.h: avoid constraint self-dependency (Matt Whitlock)
138f867156 add missing #include <cstdint> for GCC 15 (Matt Whitlock)

Pull request description:

  #30612 with changes made.

  GCC 15 introduces three build failures:

  * Two are related to missing includes. You can't use `uint16_t` et al. without including `<cstdint>`.

  * The third is harder to understand but easy to fix. GCC changed something about the way templates are instantiated when checking type constraints, and now there is a dependency loop while checking `std::optional<CFeeRate>`. This manifests as the following compile-time mess:
      ```
      In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/format:48,
                       from /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/chrono_io.h:39,
                       from /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/chrono:3362,
                       from ./util/time.h:9,
                       from ./primitives/block.h:12,
                       from ./blockencodings.h:8,
                       from blockencodings.cpp:5:
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits: In substitution of 'template<class _Up>  requires !(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr std::optional<CFeeRate>::optional(const std::optional<_Tp>&) [with _Up = CFeeRate]':
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:1140:25:   required by substitution of 'template<class _Tp, class ... _Args> using std::__is_constructible_impl = std::__bool_constant<__is_constructible(_Tp, _Args ...)> [with _Tp = CFeeRate; _Args = {std::optional<CFeeRate>&}]'
       1140 |       = __bool_constant<__is_constructible(_Tp, _Args...)>;
            |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:1145:12:   required from 'struct std::is_constructible<CFeeRate, std::optional<CFeeRate>&>'
       1145 |     struct is_constructible
            |            ^~~~~~~~~~~~~~~~
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:178:35:   required by substitution of 'template<class ... _Bn> std::__detail::__first_t<std::integral_constant<bool, false>, typename std::enable_if<(!(bool)(_Bn::value)), void>::type ...> std::__detail::__or_fn(int) [with _Bn = {std::is_constructible<CFeeRate, std::optional<CFeeRate>&>, std::is_convertible<std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, std::optional<CFeeRate> >, std::is_convertible<std::optional<CFeeRate>, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate>&>, std::is_convertible<const std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate> >, std::is_convertible<const std::optional<CFeeRate>, CFeeRate>}]'
        178 |                                      __enable_if_t<!bool(_Bn::value)>...>;
            |                                                               ^~~~~
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:196:41:   required from 'struct std::__or_<std::is_constructible<CFeeRate, std::optional<CFeeRate>&>, std::is_convertible<std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, std::optional<CFeeRate> >, std::is_convertible<std::optional<CFeeRate>, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate>&>, std::is_convertible<const std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate> >, std::is_convertible<const std::optional<CFeeRate>, CFeeRate> >'
        196 |     : decltype(__detail::__or_fn<_Bn...>(0))
            |                ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:824:45:   required from 'constexpr const bool std::optional<CFeeRate>::__construct_from_contained_value<CFeeRate, CFeeRate>'
        824 |           = !__converts_from_optional<_Tp, _From>::value;
            |                                                    ^~~~~
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:884:7:   required by substitution of 'template<class _Up>  requires !(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr std::optional<CFeeRate>::optional(const std::optional<_Tp>&) [with _Up = CFeeRate]'
        884 |           && __construct_from_contained_value<_Up>
            |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ./validation.h:164:41:   required from here
        164 |         return MempoolAcceptResult(state);
            |                                         ^
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:886:2:   required by the constraints of 'template<class _Tp> template<class _Up>  requires !(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr std::optional<_Tp>::optional(const std::optional<_From>&)'
      /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:884:14: error: satisfaction of atomic constraint '__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type> [with _Tp = _Tp; _Up = _Up]' depends on itself
        884 |           && __construct_from_contained_value<_Up>
            |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ```
      It is easiest to solve this by changing the `static_assert` in the explicit `CFeeRate` constructor to a SFINAE by using a type constraint on the function template parameter.

  We already [downstreamed](https://github.com/gentoo/gentoo/pull/38015) these fixes in Gentoo.

ACKs for top commit:
  stickies-v:
    ACK 055bc05792

Tree-SHA512: ce9cb27bcd9b0f4bbc80951e45cf7127112dcb7f9937bcb0167b362026d35beecb1255354746de0aac82e03c41eaccbe26acbfe0ddff2ee1e5a8634673f4f4ba
2024-08-12 14:04:12 +01:00
merge-script
c7b8f6f2e2
Merge bitcoin/bitcoin#30625: chainparams: Handle Testnet4 in GetNetworkForMagic
b0ec8716bf chainparams: Handle Testnet4 in GetNetworkForMagic (Fabian Jahr)

Pull request description:

  Found during testing: The recently introduced `GetNetworkForMagic()` doesn't handle Testnet4 yet.

ACKs for top commit:
  tdb3:
    cr ACK b0ec8716bf
  maflcko:
    review ACK b0ec8716bf
  theStack:
    ACK b0ec8716bf
  willcl-ark:
    crACK b0ec8716bf

Tree-SHA512: 77cd0a6791529e5c5dfdb25cff3eff77224be9058d7cf4a8b3544651eb44c5e8ee90c5abfb9751ab0e11c5aa2d8477831dbf1868c4d5909481e0979e4db1eb28
2024-08-12 11:26:26 +01:00
merge-script
190033600b
Merge bitcoin/bitcoin#30524: doc: rpc: Use "output script" consistently (2/2)
fa5755b0a8 doc: rpc: Use "output script" consistently (2/2) (MarcoFalke)

Pull request description:

  Small follow-up to https://github.com/bitcoin/bitcoin/pull/30408 to fixup the RPCs that were forgotten.

ACKs for top commit:
  theStack:
    lgtm ACK fa5755b0a8

Tree-SHA512: f1fc0aabb59017da216d6fe0f08a2274336d04db332ad6ce3d9608cd6f03667be1c76423f24a489ac8e7d536011a129dca752ab64b4621b7bc1d4d53f68602e4
2024-08-12 11:19:13 +01:00
Matt Whitlock
055bc05792
policy/feerate.h: avoid constraint self-dependency
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/format:48,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/chrono_io.h:39,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/chrono:3362,
                 from ./util/time.h:9,
                 from ./primitives/block.h:12,
                 from ./blockencodings.h:8,
                 from blockencodings.cpp:5:
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits: In substitution of 'template<class _Up>  requires !(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr std::optional<CFeeRate>::optional(const std::optional<_Tp>&) [with _Up = CFeeRate]':
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:1140:25:   required by substitution of 'template<class _Tp, class ... _Args> using std::__is_constructible_impl = std::__bool_constant<__is_constructible(_Tp, _Args ...)> [with _Tp = CFeeRate; _Args = {std::optional<CFeeRate>&}]'
 1140 |       = __bool_constant<__is_constructible(_Tp, _Args...)>;
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:1145:12:   required from 'struct std::is_constructible<CFeeRate, std::optional<CFeeRate>&>'
 1145 |     struct is_constructible
      |            ^~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:178:35:   required by substitution of 'template<class ... _Bn> std::__detail::__first_t<std::integral_constant<bool, false>, typename std::enable_if<(!(bool)(_Bn::value)), void>::type ...> std::__detail::__or_fn(int) [with _Bn = {std::is_constructible<CFeeRate, std::optional<CFeeRate>&>, std::is_convertible<std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, std::optional<CFeeRate> >, std::is_convertible<std::optional<CFeeRate>, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate>&>, std::is_convertible<const std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate> >, std::is_convertible<const std::optional<CFeeRate>, CFeeRate>}]'
  178 |                                      __enable_if_t<!bool(_Bn::value)>...>;
      |                                                               ^~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/type_traits:196:41:   required from 'struct std::__or_<std::is_constructible<CFeeRate, std::optional<CFeeRate>&>, std::is_convertible<std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, std::optional<CFeeRate> >, std::is_convertible<std::optional<CFeeRate>, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate>&>, std::is_convertible<const std::optional<CFeeRate>&, CFeeRate>, std::is_constructible<CFeeRate, const std::optional<CFeeRate> >, std::is_convertible<const std::optional<CFeeRate>, CFeeRate> >'
  196 |     : decltype(__detail::__or_fn<_Bn...>(0))
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:824:45:   required from 'constexpr const bool std::optional<CFeeRate>::__construct_from_contained_value<CFeeRate, CFeeRate>'
  824 |           = !__converts_from_optional<_Tp, _From>::value;
      |                                                    ^~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:884:7:   required by substitution of 'template<class _Up>  requires !(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr std::optional<CFeeRate>::optional(const std::optional<_Tp>&) [with _Up = CFeeRate]'
  884 |           && __construct_from_contained_value<_Up>
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./validation.h:164:41:   required from here
  164 |         return MempoolAcceptResult(state);
      |                                         ^
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:886:2:   required by the constraints of 'template<class _Tp> template<class _Up>  requires !(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr std::optional<_Tp>::optional(const std::optional<_From>&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/optional:884:14: error: satisfaction of atomic constraint '__construct_from_contained_value<_Up, typename std::remove_cv< <template-parameter-1-1> >::type> [with _Tp = _Tp; _Up = _Up]' depends on itself
  884 |           && __construct_from_contained_value<_Up>
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2024-08-12 11:16:49 +01:00
Matt Whitlock
138f867156
add missing #include <cstdint> for GCC 15 2024-08-12 11:15:11 +01:00
merge-script
40c11ac318
Merge bitcoin/bitcoin#30624: doc: Remove outdated nTx faking comment
fa04511e44 doc: Remove outdated nTx faking comment (MarcoFalke)

Pull request description:

  This problematic  `nTx` "faking" was removed in commit b50554babd.

  So fix the wrong comment.

  Also, address the typo nits from:

  * https://github.com/bitcoin/bitcoin/pull/29370#discussion_r1531789314
  * https://github.com/bitcoin/bitcoin/pull/30598#discussion_r1711982543

ACKs for top commit:
  fjahr:
    ACK fa04511e44

Tree-SHA512: c918f0b9274be9c347a37d6221915688977a858fb8d2146035718bf17df0bd3b51d67ef12b971556851c0f69f46d26f557c35a5461abeb0683b538b9dc48f5b6
2024-08-12 11:10:45 +01:00
glozow
257a4fda3c
Merge bitcoin/bitcoin#30616: test: remove ExtractDestination false assertion for ANCHOR script
a4f2b18573 [test]: remove `ExtractDestination` false assertion for `ANCHOR` script (ismaelsadeeq)

Pull request description:

  This PR fixes #30615

  `ExtractDestination` returns `true` when `TxoutType` is `ANCHOR` see https://github.com/bitcoin/bitcoin/issues/30615#issuecomment-2277538703

ACKs for top commit:
  maflcko:
    review ACK a4f2b18573
  instagibbs:
    ACK a4f2b18573
  theStack:
    utACK a4f2b18573
  BrandonOdiwuor:
    Code Review ACK a4f2b18573
  glozow:
    ACK a4f2b18573

Tree-SHA512: 6120494fe888acf26b252d4aadc01dc256e294ea5e4c954fd9b4694be27dc35cf0e33e3b3bcb012fb4abe1cab0b1d0d515db226fa771e791e0fe7efbcbd8834d
2024-08-12 09:29:54 +01:00
Fabian Jahr
b0ec8716bf
chainparams: Handle Testnet4 in GetNetworkForMagic 2024-08-10 22:19:42 +02:00
MarcoFalke
fa04511e44
doc: Remove outdated nTx faking comment
This was fixed in commit b50554babd.

Also, address the typo nits from:

* https://github.com/bitcoin/bitcoin/pull/29370#discussion_r1531789314
* https://github.com/bitcoin/bitcoin/pull/30598#discussion_r1711982543
2024-08-10 17:04:54 +02:00
Sjors Provoost
1610643c8b
chainparams: add mainnet assumeutxo param at height 840_000 2024-08-10 08:53:42 +02:00
Ava Chow
c2d15d993e
Merge bitcoin/bitcoin#29519: p2p: For assumeutxo, download snapshot chain before background chain
49d569cb1f p2p: For assumeutxo, download snapshot chain before background chain (Martin Zumsande)
7a885518d5 p2p: Restrict downloading of blocks for snapshot chain (Martin Zumsande)

Pull request description:

  After loading a snapshot, `pindexLastCommonBlock` is usually already set to some block for existing peers. That means we'd continue syncing the background chain from those peers instead of prioritising the snapshot chain, which defeats the purpose of doing assumeutxo in the first place. Only existing peers are affected by this bug.

ACKs for top commit:
  fjahr:
    re-ACK 49d569cb1f
  achow101:
    ACK 49d569cb1f
  Sjors:
    tACK 49d569cb1f

Tree-SHA512: 0eaebe1c29a8510d5ced57e14c09b128ccb34b491692815291df68bf12e2a15b52b1e7bf8d9f34808904e7f7bc20f70b0ad0f7e14df93bbdf456bd12cc02a5d2
2024-08-09 17:42:39 -04:00
Ava Chow
9a696397e7
Merge bitcoin/bitcoin#30598: assumeutxo: Drop block height from metadata
00618e8745 assumeutxo: Drop block height from metadata (Fabian Jahr)

Pull request description:

  Fixes https://github.com/bitcoin/bitcoin/issues/30514 which has more context and shows how the issue can be reproduced. Since the value in question is removed, there is no test to add to reproduce anything.

  This is an alternative approach to #30516 with much of the [code being suggested there](https://github.com/bitcoin/bitcoin/pull/30516#discussion_r1689146902).

ACKs for top commit:
  maflcko:
    re-ACK 00618e8745 🎌
  achow101:
    ACK 00618e8745
  theStack:
    Code-review ACK 00618e8745
  ismaelsadeeq:
    Re-ACK 00618e8745
  mzumsande:
    ACK 00618e8745

Tree-SHA512: db9575247bae838ad7742a27a216faaf55bb11e022f9afdd05752bb09bbf9614717d0ad64304ff5722a16bf41d8dea888af544e4ae26dcaa528c1add0269a4a8
2024-08-09 16:20:00 -04:00
Ava Chow
6b2dcba076 wallet: List sqlite wallets with empty string name
Although it is not explicitly possible to create a default wallet with
descriptors, it is possible to migrate a default wallet and have it end
up being a default wallet with descriptors. These wallets should be
listed by ListDatabases so that it appears in wallet directory listings
to avoid user confusion.
2024-08-09 15:55:07 -04:00
Ava Chow
3ddbdd1815 wallet: Ignore .bak files when listing wallet files
Migration creates backup files in the wallet directory with .bak as the
extension. This pollutes the output of listwalletdir with backup files
that most users should not need to care about.
2024-08-09 15:55:07 -04:00
Ava Chow
389cf32aca
Merge bitcoin/bitcoin#30604: doc, chainparams: 29775 release notes and follow-ups
92c1d7d1f8 validation: Use MAX_TIMEWARP constant as testnet4 timewarp defense delta (Fabian Jahr)
4b2fad502e doc: Add release notes for 29775 (Fabian Jahr)
f7cc97313b doc: Align deprecation warnings (Fabian Jahr)
1163b08378 chainparams: Add initial minimum chain work for Testnet4 (Fabian Jahr)

Pull request description:

  This completes follow-ups left open in #29775.

  - Adds release notes
  - Addresses the [misalignment](https://github.com/bitcoin/bitcoin/pull/29775#discussion_r1706982102) in deprecation warnings and hints at the intention to remove support for Testnet3.
  - Adds initial minimum chainwork for Testnet4.
  - Use the `MAX_TIMEWARP` constant as the timewarp defense delta, equal to `MAX_FUTURE_BLOCK_TIME`.

ACKs for top commit:
  Sjors:
    ACK 92c1d7d1f8
  achow101:
    ACK 92c1d7d1f8
  tdb3:
    re ACK 92c1d7d1f8

Tree-SHA512: 7ebdac7809f96231f75ca62706af59cd1ed27f713a4c7be5e2ad69fae95832b146b3ea23c712fb03b412da1deda7e8a5dae55bb2bbd2dcfd9f926e85c2a72666
2024-08-09 12:55:25 -04:00
Fabian Jahr
92c1d7d1f8
validation: Use MAX_TIMEWARP constant as testnet4 timewarp defense delta
The value is equal to MAX_FUTURE_BLOCK_TIME.
2024-08-09 14:36:07 +02:00
MarcoFalke
fa6fe43207
net: Clarify that m_addr_local is only set once
Includes a rename from addrLocal to m_addr_local to match the name of
its corresponding Mutex.
2024-08-09 14:05:04 +02:00
ismaelsadeeq
a4f2b18573 [test]: remove ExtractDestination false assertion for ANCHOR script 2024-08-09 11:18:45 +01:00
merge-script
24ced52744
Merge bitcoin/bitcoin#28687: C++20 std::views::reverse
2925bd537c refactor: use c++20 std::views::reverse instead of reverse_iterator.h (stickies-v)

Pull request description:

  C++20 introduces [`std::ranges::views::reverse`](https://en.cppreference.com/w/cpp/ranges/reverse_view), which allows us to drop our own `reverse_iterator.h` implementation and also makes it easier to chain views (even though I think we currently don't use this).

ACKs for top commit:
  achow101:
    ACK 2925bd537c
  maflcko:
    ACK 2925bd537c 🎷

Tree-SHA512: 567666ec44af5d1beb7a271836bcc89c4c577abc77f522fcc18bc6d4de516ae9b0df766d0bfa6dd217569e6878331c2aee1d9815620860375e3510dad7fed476
2024-08-09 09:51:19 +01:00