Commit graph

240 commits

Author SHA1 Message Date
Byron Hambly
8133dfd061
Merge d646ca35d9 into merged_master (Bitcoin PR bitcoin/bitcoin#28994) 2025-11-17 15:22:41 +02:00
Byron Hambly
307c1b8b39
Merge dabd704642 into merged_master (Bitcoin PR bitcoin/bitcoin#25273) 2025-11-17 13:26:40 +02:00
Byron Hambly
0aec781a49
Merge 459272d639 into merged_master (Bitcoin PR bitcoin/bitcoin#26152) 2025-08-01 09:39:10 +02:00
Byron Hambly
653849b243 Merge 8e0cf4f90c into merged_master (Bitcoin PR bitcoin/bitcoin#27846) 2025-06-28 09:12:19 +02:00
Byron Hambly
da9f9ededb Merge 361a0c00b3 into merged_master (Bitcoin PR bitcoin/bitcoin#27783) 2025-06-27 13:45:18 +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
2c3f2cde3d
Merge 395b932807 into merged_master (Bitcoin PR bitcoin/bitcoin#26720) 2025-05-08 14:49:47 +02:00
Byron Hambly
0b1508bf01
ci: fix lint issues 2025-04-17 11:06:32 +02:00
Tom Trevethan
bff78b8a4e Merge 4ea3a8b71d into merged_master (Bitcoin PR bitcoin/bitcoin#25806) 2025-04-09 17:17:19 +00:00
Byron Hambly
9fdd02a17b Merge 27772d8009 into merged_master (Bitcoin PR bitcoin/bitcoin#26889) 2025-04-07 08:11:43 +02:00
Byron Hambly
c91e4c349e Merge d71b0e78eb into merged_master (Bitcoin PR bitcoin/bitcoin#25966) 2025-04-05 13:19:11 +02:00
Byron Hambly
feb8f8cf2b Merge 9887fc7898 into merged_master (Bitcoin PR bitcoin/bitcoin#26758) 2025-04-01 21:20:49 +02:00
Tom Trevethan
694c51a39f Merge 3212d104f4 into merged_master (Bitcoin PR bitcoin/bitcoin#23829) 2025-04-01 15:23:27 +00:00
Tom Trevethan
1ef728b8dd Merge a273241480 into merged_master (Bitcoin PR bitcoin/bitcoin#26020) 2025-04-01 12:00:22 +00:00
Byron Hambly
01371bb9e6 Merge 3f8591d46b into merged_master (Bitcoin PR bitcoin/bitcoin#26661) 2025-04-01 10:04:18 +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
0dcc75c6ae Merge ef744c03e5 into merged_master (Bitcoin PR bitcoin/bitcoin#25729) 2025-03-24 15:11:44 +00:00
Tom Trevethan
9d59cc40da Merge f0c4807a6a into merged_master (Bitcoin PR bitcoin/bitcoin#26560) 2025-03-13 14:07:01 +00:00
Byron Hambly
7c5f4914fb
Merge f37bd15d47 into merged_master (Bitcoin PR bitcoin/bitcoin#25685)
FIXME introduces a new regression test to reproduce the issue commented
out in the confidential transaction functional test
2025-02-27 09:55:45 +02:00
Byron Hambly
ca0a68b350
Merge UP TO 551c8e9526 into merged_master (UP TO bitcoin/bitcoin#26349)
Includes FIXMEs for a few functional tests
2025-02-05 09:50:17 +02:00
Byron Hambly
8499b13762
lint: fix lint issues 2024-12-03 14:02:33 +02:00
Byron Hambly
f46275d011 Merge 2bd9aa5a44 into merged_master (Bitcoin PR bitcoin/bitcoin#25647)
This was a difficult merge as always with diffs that touch spend.cpp and
createtransactioninternal. Added a FIXME NB for fundrawtransaction with
external outputs, which MUST be fixed before a new release.
2024-11-21 14:29:21 +02:00
Byron Hambly
ee6cc528c6 Merge 64f7a1940d into merged_master (Bitcoin PR bitcoin/bitcoin#25734) 2024-11-03 14:28:09 +02:00
Byron Hambly
49d368ea6b Merge 006740b6f6 into merged_master (Bitcoin PR bitcoin/bitcoin#25721) 2024-10-25 13:33:19 +02:00
Byron Hambly
f7b03ad72e
Merge 1abbae65eb into merged_master (Bitcoin PR bitcoin/bitcoin#24584)
This should be reviewed carefully. The new availablecoins_test was
showing an intermittent error [1]. The test variants were split out into
their own test cases to work around the issue, but requires further
investigation.

[1]: https://github.com/ElementsProject/elements/issues/1370
2024-10-24 12:08:44 +02:00
James Dorfman
e22bfb3011 Merge 316afb1eca into merged_master (Bitcoin PR bitcoin/bitcoin#25218) 2024-10-16 04:56:53 +00:00
James Dorfman
d6108a5ed1 Merge c92eb6cda0 into merged_master (Bitcoin PR bitcoin/bitcoin#25562) 2024-10-15 16:50:52 +00:00
James Dorfman
a20940b37c Merge 194710d8ff into merged_master (Bitcoin PR bitcoin/bitcoin#25481)
Please reviewthis commit *extremely thoroughly*.

This commit changed how certain transaction size calculations are done.
This altered fee estiimation for certain elements transactions, and caused a lot
of things to break in the `wallet_bumpfee` functional test.

After *extensive* work (~10 hours), I managed to figure all this out and properly
reconcile the functional test to work with the new fee calculations.

However, the original bitcoin commit didn't have any changes to this functional test.
So, it's also simply possible that I may have made an actual bug and these fee issues
I was seeing in the functional test were pointing at this bug.

I'm not sure if there is a bug. I don't think so... I think the transaction estimations just got
bigger in certain cases.

But... please verify this. Look into the diff of this commit, and compare how use_max_sig used
to be calculated in a bunch of different ways for different use cases, but is now being calculated
only once (inside of DummySignInput), in the same way for all use cases. Did I accidentally introduce
a bug there?

In other words... I'm not certain about the wallet changes here. Please double and triple check them.
Thanks!
2024-10-15 06:42:26 +00:00
James Dorfman
9447c50efd Merge cc22bd7f70 into merged_master (Bitcoin PR bitcoin/bitcoin#25495) 2024-09-19 19:05:51 +00:00
James Dorfman
034a29075f Merge bc28ca3afb into merged_master (Bitcoin PR bitcoin/bitcoin#25118)
Please review this commit carefully. It touched wallet code.
2024-09-16 03:30:10 +00:00
James Dorfman
0be947179f Fix failing unit + functional tests for merge of bitcoin/bitcoin#25083 (the previous commit) 2024-09-06 05:18:08 +00:00
James Dorfman
57830cb012 Merge 3368f84c43 into merged_master (Bitcoin PR bitcoin/bitcoin#25083)
I'm not certain about the elements-specific changes to the `COutput`
constructor in src/wallet/coinselection.cpp. Please double check those.
2024-08-20 03:56:11 +00:00
James Dorfman
c071c11577 Merge 3aa851ad2a into merged_master (Bitcoin PR bitcoin/bitcoin#24820)
The new test case was calling SelectCoins with a CAmount, I changed it
to a CAmountMap, so that it works properly in elements.
2024-08-13 20:28:46 +00:00
James Dorfman
249473e319 Merge 260ede1d99 into merged_master (Bitcoin PR bitcoin/bitcoin#24644) 2024-08-02 20:43:21 +00:00
James Dorfman
4bad776853 Merge 2a3e8fb359 into merged_master (Bitcoin PR bitcoin/bitcoin#24696) 2024-05-23 21:52:57 +00:00
James Dorfman
641df02a8d Merge 6d5771ba07 into merged_master (Bitcoin PR bitcoin/bitcoin#24494)
Please review carefully: this touches the wallet code, and I'm not sure
I adapted the new change metrics to work correctly for multi-asset.
2024-04-10 05:12:50 +00:00
James Dorfman
17d45cdb7d Merge 3740cdd125 into merged_master (Bitcoin PR bitcoin/bitcoin#24091) 2024-03-19 06:35:30 +00:00
James Dorfman
cc32b91393 Merge 3ab96f2945 into merged_master (Bitcoin PR bitcoin/bitcoin#24560) 2024-01-11 16:36:11 +00:00
Andrew Chow
d646ca35d9
Merge bitcoin/bitcoin#28994: wallet: skip BnB when SFFO is enabled
576bee88fd fuzz: disable BnB when SFFO is enabled (furszy)
05e5ff194c test: add coverage for BnB-SFFO restriction (furszy)
0c5755761c wallet: create tx, log resulting coin selection info (furszy)
5cea25ba79 wallet: skip BnB when SFFO is active (Murch)

Pull request description:

  Solves #28918. Coming from https://github.com/bitcoin/bitcoin/issues/28918#issuecomment-1838626406 discussion.

  The intention is to decouple only the bugfix relevant commits from #28985, allowing them to be included in the 26.x release. This way, we can avoid disabling the coin selection fuzzing test for an entire release.

  Note:
  Have introduced few changes to the bug fix commit so that the unit tests pass without the additional burden introduced in #28985.

ACKs for top commit:
  josibake:
    ACK 576bee88fd
  murchandamus:
    ACK 576bee88fd
  achow101:
    ACK 576bee88fd

Tree-SHA512: f5d90eb3f3f524265afe4719495c9bf30f98b9af26cf039f7df5a7db977abae72caa7a3478cdd0ab10cd143bc1662e8fc5286b5bc10fc10f0dd582a45b45c31a
2023-12-12 10:52:12 -05:00
furszy
05e5ff194c
test: add coverage for BnB-SFFO restriction
Verify the transaction creation process does not produce
a BnB solution when SFFO is enabled.
This is currently problematic because it could require a
change output. And BnB is specialized on changeless solutions.

Co-authored-by: Andrew Chow <achow101@gmail.com>
Co-authored-by: Murch <murch@murch.one>
2023-12-11 23:40:21 -03:00
Andrew Chow
596642c5a9 wallet: Replace SelectExternal with SetTxOut
Instead of having a separate CCoinControl::SelectExternal function, we
can use the normal CCoinControl::Select function and explicitly use
PreselectedInput::SetTxOut in the caller. The semantics of what an
external input is remains.
2023-12-08 14:55:14 -05:00
Murch
5cea25ba79
wallet: skip BnB when SFFO is active
Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
2023-12-07 21:47:20 -03:00
Murch
f18f9ef4d3
Amend bumpfee for inputs with overlapping ancestry
At the end of coin selection reduce the fees by the difference between
the individual bump fee estimates and the collective bump fee estimate.
2023-09-13 15:46:59 -04:00
Murch
2e35e944da
Bump unconfirmed parent txs to target feerate
When a transaction uses an unconfirmed input, preceding this commit it
would not consider the feerate of the parent transaction. Given a parent
transaction with a lower ancestor feerate, this resulted in the new
transaction's ancestor feerate undershooting the target feerate.

This commit changes how we calculate the effective value of unconfirmed UTXOs.
The effective value of unconfirmed UTXOs is decreased by the fee
necessary to bump its ancestry to the target feerate. This also impacts
the calculation of the waste metric: since the estimate for the current
fee is increased by the bump fees, unconfirmed UTXOs current fees appear less
favorable compared to their unchanged long term fees.

This has one caveat: if multiple UTXOs have overlapping ancestries, each
of their individual estimates will account for bumping all ancestors.
2023-09-13 14:33:58 -04:00
Andrew Chow
3e3e052411
coinselection: Move GetSelectionWaste into SelectionResult
GetSelectionWaste will need to access more context within a selection
result, and so should be a private member function rather than a static
function. It's only use outside of SelectionResult was for tests which
have now been updated to just make a SelectionResult.

Co-authored-by: Murch <murch@murch.one>
2023-09-13 14:33:57 -04:00
Andrew Chow
8e0cf4f90c
Merge bitcoin/bitcoin#27846: [coinselection] Increase SRD target by change_fee
1771daa815 [fuzz] Show that SRD budgets for non-dust change (Murch)
941b8c6539 [bug] Increase SRD target by change_fee (Murch)

Pull request description:

  I discovered via fuzzing of another coin selection approach that at extremely high feerates SRD may find input sets that lead to transactions without change outputs. This is an unintended outcome since SRD is meant to always produce a transaction with a change output—we use other algorithms to specifically search for changeless solutions.

  The issue occurs when the flat allowance of 50,000 ṩ for change is insufficient to pay for the creation of a change output with a non-dust amount, at and above 1,613 ṩ/vB. Increasing the change budget by `change_fee` makes SRD behave as expected at any feerates.

  Note: The intermittent failures of `test/functional/interface_usdt_mempool.py` are a known issue: https://github.com/bitcoin/bitcoin/issues/27380

ACKs for top commit:
  achow101:
    ACK 1771daa815
  S3RK:
    ACK 1771daa815

Tree-SHA512: 3f36a3e317ef0a711d0e409069c05032bff1d45403023f3728bf73dfd55ddd9e0dc2a9969d4d69fe0a426807ebb0bed1f54abfc05581409bfe42c327acf766d4
2023-06-23 16:57:11 -04:00
Murch
941b8c6539
[bug] Increase SRD target by change_fee
I discovered via fuzzing of another coin selection approach that at
extremely high feerates SRD may find input sets that lead to
transactions without change outputs. This is an unintended outcome since
SRD is meant to always produce a transaction with a change output—we use
other algorithms to specifically search for changeless solutions.

The issue occures when the flat allowance of 50,000 ṩ for change is
insufficient to pay for the creation of a change output with a non-dust
amount, at and above 1,613 ṩ/vB. Increasing the change budget by
change_fees makes SRD behave as expected at any feerates.
2023-06-21 16:19:19 -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
Byron Hambly
e3ab195851 Merge c840ab0231 into merged_master (Bitcoin PR bitcoin/bitcoin#22019)
This was a complicated merge that had to be modified from upstream to work with multi-assets,
so it should be reviewed carefully
2023-06-12 12:36:04 +00:00