Commit graph

382 commits

Author SHA1 Message Date
Byron Hambly
6c55760a2d Merge 7ef2d4ee4d into merged_master (Bitcoin PR bitcoin/bitcoin#28244) 2025-07-04 17:24:18 +02:00
Byron Hambly
ea86e8f268 Merge 7edce77ff3 into merged_master (Bitcoin PR bitcoin/bitcoin#28067) 2025-07-03 09:42:33 +02:00
Byron Hambly
bc6f151cb8 Merge f08d914a67 into merged_master (Bitcoin PR bitcoin/bitcoin#27920) 2025-06-30 15:29:17 +02:00
Byron Hambly
489e4b0c3e Merge 7952a5934a into merged_master (Bitcoin PR bitcoin/bitcoin#27927) 2025-06-30 13:48:32 +02:00
Byron Hambly
2663ae44dd Merge d9c7c2fd3e into merged_master (Bitcoin PR bitcoin/bitcoin#24914) 2025-06-30 13:48:12 +02:00
Byron Hambly
edc585d157 Merge 9564f98fee into merged_master (Bitcoin PR bitcoin/bitcoin#27636) 2025-06-25 11:40:46 +02:00
Byron Hambly
6e6d5d7687 Merge 6cc136bbd3 into merged_master (Bitcoin PR bitcoin/bitcoin#27556) 2025-06-20 21:20:43 +02:00
Byron Hambly
d1fe2b52de Merge b34e19a2bf into merged_master (Bitcoin PR bitcoin/bitcoin#27665) 2025-06-20 15:48:43 +02:00
Byron Hambly
8b9efdd41d Merge d02df7db6b into merged_master (Bitcoin PR bitcoin/bitcoin#26715) 2025-06-20 15:44:24 +02:00
Byron Hambly
db3df5936f Merge 5325a61167 into merged_master (Bitcoin PR bitcoin/bitcoin#27224) 2025-05-14 14:30:41 +02:00
Byron Hambly
0d6796ec53 Merge cae0608ad4 into merged_master (Bitcoin PR bitcoin/bitcoin#27217) 2025-04-12 17:04:51 +02:00
Byron Hambly
e23e51f9ef Merge 369d4c03b7 into merged_master (Bitcoin PR bitcoin/bitcoin#27254) 2025-04-12 12:19:09 +02:00
Tom Trevethan
1435fb334b Merge 79e007d1d6 into merged_master (Bitcoin PR bitcoin/bitcoin#25296) 2025-04-04 13:36:08 +00:00
Byron Hambly
f6fb703bc1 Merge a62231bca6 into merged_master (Bitcoin PR bitcoin/bitcoin#26690) 2025-04-04 09:43:16 +02:00
Byron Hambly
2a130e22dd Merge 1e6b384d59 into merged_master (Bitcoin PR bitcoin/bitcoin#26702) 2025-03-31 18:19:45 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Tom Trevethan
edf22a74f8 Merge 2ce3d26757 into merged_master (Bitcoin PR bitcoin/bitcoin#26462) 2025-03-13 18:02:44 +00:00
Byron Hambly
58b3c39377 Merge 5690848dfb into merged_master (Bitcoin PR bitcoin/bitcoin#26532) 2025-03-04 10:57:04 +02:00
Byron Hambly
cd60150aa4 Merge c85688347e into merged_master (Bitcoin PR bitcoin/bitcoin#26021) 2024-11-26 15:01:13 +02:00
Byron Hambly
e1e241d410 Merge 7921026a24 into merged_master (Bitcoin PR bitcoin/bitcoin#19602)
FIXME for test_other_watchonly in the new wallet migration test
2024-11-26 11:21:27 +02:00
Byron Hambly
1006327a13 Merge 9eaef10801 into merged_master (Bitcoin PR bitcoin/bitcoin#25707) 2024-11-04 11:26:40 +02:00
James Dorfman
a68592df70 Merge c892cb7d8d into merged_master (Bitcoin PR bitcoin/bitcoin#25383) 2024-10-09 05:29:53 +00:00
James Dorfman
11e59304dc Merge 480d8069d7 into merged_master (Bitcoin PR bitcoin/bitcoin#24924) 2024-09-19 15:58:36 +00:00
James Dorfman
31df518140 Merge 7b3343f300 into merged_master (Bitcoin PR bitcoin/bitcoin#25108) 2024-08-13 04:20:55 +00:00
James Dorfman
b3a377c2d0 Merge 0da559e02e into merged_master (Bitcoin PR bitcoin/bitcoin#24661) 2024-07-08 15:17:32 +00:00
James Dorfman
5082ed04fd Merge 98e9d8e8e2 into merged_master (Bitcoin PR bitcoin/bitcoin#23732) 2024-01-11 18:05:49 +00:00
Andrew Chow
86ea8bed54 Move CScriptID to script.{h/cpp}
CScriptID should be next to CScript just as CKeyID is next to CPubKey
2023-08-14 17:38:27 -04:00
furszy
286e0c7d5e
wallet: loading, log descriptor parsing error details
The `UNKNOWN_DESCRIPTOR` error comes from the
`WalletDescriptor::DeserializeDescriptor` std::ios_base
exception, which contains further information about the
parsing error.
2023-07-11 11:34:25 -03:00
Andrew Chow
f08d914a67
Merge bitcoin/bitcoin#27920: wallet: bugfix, always use apostrophe for spkm descriptor ID
5df988b534 test: add coverage for descriptor ID (furszy)
6a9510d2da wallet: bugfix, always use apostrophe for spkm descriptor ID (furszy)
97a965d98f refactor: extract descriptor ID calculation from spkm GetID() (furszy)
1d207e3931 wallet: do not allow loading descriptor with an invalid ID (furszy)

Pull request description:

  Aiming to fix #27915.

  As we re-write the descriptor's db record every time that
  the wallet is loaded (at `TopUp` time), if the spkm ID differs
  from the one in db, the wallet will enter in an unrecoverable
  corruption state (due to the storage of a descriptor with an ID
  that is not linked to any other descriptor record in DB), and
  no soft version will be able to open it anymore.

  Because we cannot change the past, to stay compatible between
  releases, we need to always use the apostrophe version for the
  spkm IDs.

ACKs for top commit:
  achow101:
    ACK 5df988b534
  Sjors:
    tACK 5df988b534

Tree-SHA512: f63fc4aac7d21a4e515657471758d28857575e751865bfa359298f8b89b2568970029ca487a873c1786a5716325f453f06cd417ed193f3366417f6e8c2987332
2023-07-03 21:42:01 -04:00
Byron Hambly
7a7253639a Merge 267917f563 into merged_master (Bitcoin PR bitcoin/bitcoin#23304) 2023-07-03 10:06:51 +00:00
Byron Hambly
4fbfb0ccbe Merge 8d6f9210d9 into merged_master (Bitcoin PR bitcoin/bitcoin#24401) 2023-07-02 15:10:19 +00:00
Byron Hambly
4988afcbc2 Merge 3ace3a17c9 into merged_master (Bitcoin PR bitcoin/bitcoin#20744) 2023-06-30 07:38:29 +00:00
Andrew Chow
7952a5934a
Merge bitcoin/bitcoin#27927: util: Allow std::byte and char Span serialization
fa38d86235 Use only Span{} constructor for byte-like types where possible (MarcoFalke)
fa257bc831 util: Allow std::byte and char Span serialization (MarcoFalke)

Pull request description:

  Seems odd to require developers to cast all byte-like spans passed to serialization to `unsigned char`-spans. Fix that by passing and accepting byte-like spans as-is. Finally, add tests and update the code to use just `Span` where possible.

ACKs for top commit:
  sipa:
    utACK fa38d86235
  achow101:
    ACK fa38d86235
  ryanofsky:
    Code review ACK fa38d86235. This looks great. The second commit really removes a lot of boilerplate and shows why the first commit is useful.

Tree-SHA512: 788592d9ff515c3ebe73d48f9ecbb8d239f5b985af86f09974e508cafb0ca6d73a959350295246b4dfb496149bc56330a0b5d659fc434ba6723dbaba0b7a49e5
2023-06-28 15:12:12 -04:00
furszy
1d207e3931
wallet: do not allow loading descriptor with an invalid ID
If the computed descriptor's ID doesn't match the wallet's
DB spkm ID, return early from the loading process to prevent
DB data from being modified in any post-loading procedure
(e.g 'TopUp' updates the descriptor's data).
2023-06-28 09:37:15 -03:00
Andrew Chow
2636844f53 walletdb: Remove loading code where the database is iterated
Instead of iterating the database to load the wallet, we now load
particular kinds of records in an order that we want them to be loaded.
So it is no longer necessary to iterate the entire database to load the
wallet.
2023-06-27 11:08:05 -04:00
Andrew Chow
cd211b3b99 walletdb: refactor decryption key loading
Instead of loading decryption keys as we iterate the database, load them
explicitly.
2023-06-27 11:08:00 -04:00
Andrew Chow
31c033e5ca walletdb: refactor defaultkey and wkey loading
Instead of dealing with these records when iterating the entire
database, find and handle them explicitly.

Loading of OLD_KEY records is bumped up to a LOAD_FAIL error as we will
not be able to use these types of keys which can lead to users missing
funds.
2023-06-27 11:07:51 -04:00
Andrew Chow
c978c6d39c walletdb: refactor active spkm loading
Instead of loading active spkm records as we come across them when
iterating the database, load them explicitly.

Due to exception handling changes, deserialization errors are now
treated as critical.
2023-06-27 11:07:46 -04:00
Andrew Chow
6fabb7fc99 walletdb: refactor tx loading
Instead of loading tx records as we come across them when iterating the
database, load them explicitly.
2023-06-27 11:07:38 -04:00
Andrew Chow
abcc13dd24 walletdb: refactor address book loading
Instead of loading address book records as we come across them when
iterating the database, load them explicitly

Due to exception handling changes, deserialization errors are now
treated as critical.

The error message for noncritical errors has also been updated to
reflect that there's more data that could be missing than just address
book entries and tx data.
2023-06-27 11:04:18 -04:00
Andrew Chow
405b4d9147 walletdb: Refactor descriptor wallet records loading
Instead of loading descriptor wallet records as we come across them when
iterating the database, loading them explicitly.

Exception handling for these records changes to a per-record type basis,
rather than globally. This results in some records now failing with a
critical error rather than a non-critical one.
2023-06-27 11:04:18 -04:00
Andrew Chow
30ab11c497 walletdb: Refactor legacy wallet record loading into its own function
Instead of loading legacy wallet records as we come across them when
iterating the database, load them explicitly.

Exception handling for these records changes to a per-record type basis,
rather than globally. This results in some records now failing with a
critical error rather than a non-critical one.
2023-06-27 11:00:47 -04:00
MarcoFalke
fa38d86235
Use only Span{} constructor for byte-like types where possible
This removes bloat that is not needed.
2023-06-27 10:13:37 +02:00
Andrew Chow
9e077d9b42 salvage: Remove use of ReadKeyValue in salvage
To prepare to remove ReadKeyValue, change salvage to not use it
2023-06-19 16:46:39 -04:00
Andrew Chow
ad779e9ece walletdb: Refactor hd chain loading to its own function 2023-06-19 11:38:01 -04:00
Andrew Chow
72c2a54ebb walletdb: Refactor encryption key loading to its own function 2023-06-19 11:36:52 -04:00
Andrew Chow
3ccde4599b walletdb: Refactor crypted key loading to its own function 2023-06-19 11:35:15 -04:00
Andrew Chow
7be10adff3 walletdb: Refactor key reading and loading to its own function 2023-06-19 11:29:14 -04:00
Byron Hambly
7878ba47b9 Merge c561f2f06e into merged_master (Bitcoin PR bitcoin/bitcoin#23497) 2023-06-19 09:28:31 +00:00
Byron Hambly
47626b5a64 Merge 623745ca74 into merged_master (Bitcoin PR bitcoin/bitcoin#23912) 2023-06-14 15:44:11 +00:00