Commit graph

17121 commits

Author SHA1 Message Date
Andrew Poelstra
ebfbe923c7 Merge 00c1a4d9a9 into merged_master (Bitcoin PR #18809) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
bbb81f8d58 Merge cf5e3be5ea into merged_master (Bitcoin PR #18825) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
0a22e1a6e6 Merge 64673b1037 into merged_master (Bitcoin PR #18780) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
b86c297529 Merge afed2e98b0 into merged_master (Bitcoin PR #18810) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
2cee434502 Merge 35ef3c15ef into merged_master (Bitcoin PR #18591) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
7ba9c3d6ea Merge 63d5ed2fc4 into merged_master (Bitcoin PR #18437) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
cd480d07b3 Merge 95a9165016 into merged_master (Bitcoin PR #18736) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
5ae752cb8f Merge 0f204dd3f2 into merged_master (Bitcoin PR #18727) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
c6d6e49475 Merge af2ec6b037 into merged_master (Bitcoin PR #18759) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
9df3a34c65 Merge ecca2ea1d5 into merged_master (Bitcoin PR #18785) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
e5f1b2cdaa Merge 0ef0d33f75 into merged_master (Bitcoin PR #18038) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
e0c28ff3f2 Merge b9ba76f1c9 into merged_master (Bitcoin PR #18769) 2020-11-26 01:08:32 +00:00
Andrew Poelstra
91aca85a2a Merge 8bdb2134fc into merged_master (Bitcoin PR #18777) 2020-11-26 01:08:31 +00:00
Andrew Poelstra
1c12ae1719 Merge eef90c14ed into merged_master (Bitcoin PR #16528)
This is the 43-commit descriptor wallet PR. It was remarkably easy to merge, given
its magnitude. With this commit Elements supports importing Bitcoin descriptors
and deriving (Bitcoin) addresses, though of course it does not support blinding
yet. That is a post-rebase project.

The material changes were:

1. Changing constants in the tests (super annoying but nothing surprising)

2. Adding a missing "skip if this coin is not ours" check in src/script/sign.cpp
   which was causing us to erroneously remove existing witnesses from transactions.
   This wasn't a problem before this commit since we would only ask specific
   scriptpubkeymans to sign, and we'd never ask any to sign inputs we didn't
   own. Andy simplified the logic here to always try every scriptpubkeyman,
   which means they have to play a bit more nicely with each other.

Other than that, this was a big diff with many conflicts but literally all of
them were "we both added code" and the resolution was to take both sides.
2020-11-26 01:08:31 +00:00
Andrew Poelstra
7f37d52c1a Merge ae32e5ce3d into merged_master (Bitcoin PR #18669) 2020-11-26 01:08:31 +00:00
Andrew Poelstra
2dd753afe1 Merge 65276c7737 into merged_master (Bitcoin PR #18744) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
8710909d88 Merge 6f51f6f357 into merged_master (Bitcoin PR #18754) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
22cee70001 Merge 9fac600aba into merged_master (Bitcoin PR #17383) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
870e7097a9 Merge 8c0f86f284 into merged_master (Bitcoin PR #18757) 2020-11-26 01:08:29 +00:00
Andrew Poelstra
6990af3107 Merge e890c15e2c into merged_master (Bitcoin PR #18671) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
1ea940a2e2 Merge 4f802e59a0 into merged_master (Bitcoin PR #17509) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
4b1d94e736 Merge a7a6f1ff41 into merged_master (Bitcoin PR #18575) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
08d74600ea Merge 5dcb061589 into merged_master (Bitcoin PR #18702) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
d958ef77a9 Merge ce4e1f0282 into merged_master (Bitcoin PR #18553) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
89c3236c58 Merge 9e8e813df5 into merged_master (Bitcoin PR #18410) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
b6c2e38caa Merge acb4fa0741 into merged_master (Bitcoin PR #18665) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
ba95deb36c Merge 19032c750c into merged_master (Bitcoin PR #18612) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
627184ba0d Merge c4c3f110eb into merged_master (Bitcoin PR #18190) 2020-11-26 01:08:26 +00:00
Andrew Poelstra
873db53fe3 Merge 3be119c0f6 into merged_master (Bitcoin PR #17579) 2020-11-26 01:08:26 +00:00
Andrew Poelstra
222f2e2184 Merge 5e5dd9918e into merged_master (Bitcoin PR #17831) 2020-11-26 01:08:25 +00:00
Andrew Poelstra
2a59ec026d Merge da4cbb7927 into merged_master (Bitcoin PR #18544) 2020-11-26 01:08:25 +00:00
Andrew Poelstra
569c68a0f2 Merge f8102d9088 into merged_master (Bitcoin PR #18601) 2020-11-26 01:08:25 +00:00
Andrew Poelstra
b7307be8cd Merge b470c75847 into merged_master (Bitcoin PR #15761) 2020-11-26 01:08:25 +00:00
Andrew Poelstra
b75123826a Merge a998c5185b into merged_master (Bitcoin PR #18675) 2020-11-26 01:08:24 +00:00
Andrew Poelstra
94afad7401 Merge d65631171c into merged_master (Bitcoin PR #18695) 2020-11-26 01:08:24 +00:00
Andrew Poelstra
9192999921 Merge bbb1ba1814 into merged_master (Bitcoin PR #17219)
This modifies the CreateTransaction loop in a way not remotely worth the complexity,
and includes an absurdly fragile test where I had to add a bunch of trace statements
and tweak pretty-much every single hardcoded number. Not to name names, but it was
Sjors. (In fairness, the PR is a pure simplification of the CreateTransaction logic,
and it wasn't hard to merge even. It was just the test that caused my grief.)

Adapting the "use a dummy CTxDestination in the case that we cannot retrieve one from
the wallet" logic to our `mapScriptChange` map was not trivial. On my first attempt I
incorrectly assigned a positive vout index to the dummy script, which caused us to
call `ReturnDestination` later on the (unused) dummy destination. This is harmless now,
but when descriptor wallets are introduced in #16528, they introduce an edge case where
returning a null destination can incorrectly mark the 0th key of a BIP32 range as
unused. This triggered a test failure much later, in #19504, which uses descriptor
wallets in fundrawtransaction. The bug was that we'd import a descriptor, mark the
first key as being used, lock the wallet, call `fundrawtransaction` on a transaction
that did not require change (incorrectly marking the first key as unused but leaving
it in the descriptor ScriptPubKeyMan's cache), then call `fundrawtransaction` again
on a transaction that *did* require change. The wallet would then incorrectly retrieve
the "unused" key from cache and use it for change, rather than correctly failing and
advising the user that it could not produce change with a locked wallet and empty
keypool. This was not a fun bug to track down.

Another interesting observation is that branch-and-bound uses the CT size-overestimate
for change when trying to create changeless outputs, while our normal dust detection
uses Core's unchanged "an output is 133 bytes" logic. So when BnB is used we're willing
to delete a far bigger change output than we are when we don't use BnB.

Lest you think this works in Core, they're also inconsistent because BnB uses a
normal fee estimate for gauging change cost, while non-BnB uses the discardfee rate.

My advice is to hold your nose, pull stuff in from Core as it comes in, and thanks
to Andy's efforts things are getting better. Don't bother reviewing this too closely.
2020-12-03 00:58:01 +00:00
Andrew Poelstra
ecbc68cc87 Merge 895c71e535 into merged_master (Bitcoin PR #18682) 2020-11-26 01:08:24 +00:00
Andrew Poelstra
86082b9846 Merge 244daa4821 into merged_master (Bitcoin PR #18607) 2020-11-26 01:08:23 +00:00
Andrew Poelstra
fd37b7c5d6 Merge 54f812d9d2 into merged_master (Bitcoin PR #18673) 2020-11-26 01:08:23 +00:00
Andrew Poelstra
2ef6b9b646 Merge ecc2e4e363 into merged_master (Bitcoin PR #18664) 2020-11-26 01:08:23 +00:00
Andrew Poelstra
a1367df7d3 Merge c2e53ff064 into merged_master (Bitcoin PR #18467) 2020-11-26 01:08:23 +00:00
Andrew Poelstra
7acaa0481b Merge c189bfd260 into merged_master (Bitcoin PR #17824) 2020-11-26 01:08:22 +00:00
Andrew Poelstra
0471fb918b Merge 4a71c46905 into merged_master (Bitcoin PR #18670) 2020-11-26 01:08:22 +00:00
Andrew Poelstra
4b58cd7c0a Merge 0856c15706 into merged_master (Bitcoin PR #18262) 2020-11-26 01:08:22 +00:00
Andrew Poelstra
bc49e22548 Merge f0d97cdf70 into merged_master (Elements PR #861) 2020-11-26 01:08:22 +00:00
Andrew Poelstra
e6c67f94cc Merge 969ee85494 into merged_master (Bitcoin PR #18662) 2020-11-26 01:08:22 +00:00
Andrew Poelstra
30adb9243b Merge d8dfcea5d9 into merged_master (Bitcoin PR #17669) 2020-11-26 01:08:21 +00:00
Andrew Poelstra
cf039bc4dd Merge 18fadbafcc into merged_master (Elements PR #863) 2020-11-26 01:08:21 +00:00
Andrew Poelstra
bf709b0d4b Merge f4c0ad4aef into merged_master (Bitcoin PR #18660) 2020-11-26 01:08:21 +00:00
Andrew Poelstra
2bf8400edc Merge 79b0459648 into merged_master (Bitcoin PR #18650) 2020-11-26 01:08:21 +00:00