Commit graph

20663 commits

Author SHA1 Message Date
Andrew Poelstra
6ab18fa738 Merge 3172615d2c into merged_master (Elements PR ElementsProject/elements#986)
Note: up to this point I still had the old "sort by UNIX timestamp"
behavior on, which may have meant that some PRs were merged out of
order (i.e. multiple merged at once, followed by no-op merges). I
turned this off, and now just use git's default topo-sort (and manually
switch between Elements merges and Bitcoin merges).
2021-06-26 20:57:54 +00:00
Andrew Poelstra
7602228cf0 Merge 92cf3a22e3 into merged_master (Bitcoin PR #21007) 2021-06-26 19:51:03 +00:00
Andrew Poelstra
9e0c92057c Merge e828fc8f52 into merged_master (Bitcoin PR #21376) 2021-06-26 19:33:37 +00:00
Andrew Poelstra
05bd3e6667 Merge 767bb7d5c5 into merged_master (Bitcoin PR #21270) 2021-06-26 19:21:09 +00:00
Andrew Poelstra
dcc80b82f2 Merge 63314b8211 into merged_master (Bitcoin PR bitcoin-core/gui#229) 2021-06-26 19:01:37 +00:00
Andrew Poelstra
b5c9369b44 Merge 7cdadf91d5 into merged_master (Bitcoin PR #21395) 2021-06-26 18:49:04 +00:00
Andrew Poelstra
edf1915727 Merge eea6196c3d into merged_master (Bitcoin PR #21331) 2021-06-26 18:12:53 +00:00
Andrew Poelstra
105a81af43 Merge ee0dc02c6f into merged_master (Bitcoin PR #21397) 2021-06-26 16:46:33 +00:00
Andrew Poelstra
056a569356 Merge e175ca9c65 into merged_master (Bitcoin PR #21370) 2021-06-26 16:33:46 +00:00
Andrew Poelstra
14685bfef5 Merge 6c156e49cb into merged_master (Bitcoin PR #18842) 2021-06-26 14:38:38 +00:00
Andrew Poelstra
24a86af27b Merge a8b0892b74 into merged_master (Bitcoin PR #20536)
This PR adds a new functional test which unfortunately we need to disable
because it triggers an unrelated Elements bug (assertation failure when
attempting a large fundrawtransaction).

See https://github.com/ElementsProject/elements/issues/880
2021-06-26 14:25:24 +00:00
Andrew Poelstra
4e32743e0e Merge 2067f9e5e8 into merged_master (Bitcoin PR bitcoin-core/gui#233) 2021-06-26 13:36:45 +00:00
Andrew Poelstra
0217fdbed2 Merge a22653a636 into merged_master (Bitcoin PR #21371) 2021-06-26 13:24:17 +00:00
Andrew Poelstra
d09330b758 Merge 1a4a9305c2 into merged_master (Bitcoin PR bitcoin-core/gui#221) 2021-06-26 12:59:25 +00:00
Andrew Poelstra
b47f3355c7 Merge 8c049fe9af into merged_master (Bitcoin PR #19771) 2021-06-26 12:47:11 +00:00
Andrew Poelstra
2a4f512a08 Merge 8c21562180 into merged_master (Bitcoin PR bitcoin-core/gui#166) 2021-06-26 12:34:38 +00:00
Andrew Poelstra
a480f2322f Merge 1020b04c39 into merged_master (Bitcoin PR #21334) 2021-06-26 04:19:33 +00:00
Andrew Poelstra
af1483a39a Merge 48725e64fb into merged_master (Bitcoin PR #21209) 2021-06-26 04:06:30 +00:00
Andrew Poelstra
fc3debb274 Merge ed25cb58f6 into merged_master (Bitcoin PR bitcoin-core/gui#217) 2021-06-26 03:53:51 +00:00
Andrew Poelstra
548b6fc4f9 Merge da8c7edffe into merged_master (Bitcoin PR #21364) 2021-06-26 02:10:59 +00:00
Andrew Poelstra
90f1f6650b Merge fbf5d16238 into merged_master (Bitcoin PR #21246) 2021-06-26 01:58:32 +00:00
Andrew Poelstra
1668dac3d6 Merge 702cfc8c53 into merged_master (Bitcoin PR #21055) 2021-06-26 01:21:19 +00:00
Andrew Poelstra
60bb7aa7c7 Merge 83bdbbd300 into merged_master (Bitcoin PR #21003) 2021-06-26 01:01:46 +00:00
Andrew Poelstra
045af19da8 Merge 7450a01691 into merged_master (Bitcoin PR #21358) 2021-06-26 00:16:07 +00:00
Andrew Poelstra
a77004416d Merge 33921379b6 into merged_master (Bitcoin PR #21015) 2021-06-26 00:03:48 +00:00
Andrew Poelstra
9a55d65515 Merge 92b7efcf54 into merged_master (Bitcoin PR #21148) 2021-06-25 23:51:25 +00:00
Andrew Poelstra
bf95eb15d9 Merge 47b99ab1a9 into merged_master (Bitcoin PR #20406) 2021-06-25 23:14:56 +00:00
Andrew Poelstra
7587699a63 Merge cabe63759c into merged_master (Bitcoin PR #20877) 2021-06-25 22:50:12 +00:00
Andrew Poelstra
e3efe98059 Merge ebd8d66454 into merged_master (Bitcoin PR #19203) 2021-06-25 22:35:33 +00:00
Andrew Poelstra
57d6558507 Merge dd8f474d52 into merged_master (Bitcoin PR #19288) 2021-06-25 21:47:15 +00:00
Andrew Poelstra
362765a450 Merge b9f41df1ea into merged_master (Bitcoin PR #20685) 2021-06-25 19:49:38 +00:00
Andrew Poelstra
c32bfcde1c Merge 05e821ee19 into merged_master (Bitcoin PR #21170) 2021-06-25 18:34:10 +00:00
Andrew Poelstra
7debcb2f14 Merge 362e901a17 into merged_master (Bitcoin PR #18466) 2021-06-25 18:07:46 +00:00
Andrew Poelstra
bfdb0539b2 Merge e52ce9f2b3 into merged_master (Bitcoin PR #21286) 2021-06-25 17:53:46 +00:00
Andrew Poelstra
ba1bff7fdc Merge 8d37841cdf into merged_master (Bitcoin PR #21277) 2021-06-25 16:24:48 +00:00
Andrew Poelstra
59c8718a07 Merge e49117470b into merged_master (Bitcoin PR bitcoin-core/gui#226) 2021-06-25 16:09:12 +00:00
Andrew Poelstra
705e356896 Merge cac10e66d2 into merged_master (Bitcoin PR #21264) 2021-06-25 14:10:05 +00:00
Andrew Poelstra
62c104e117 Merge 8ca6bd0dac into merged_master (Bitcoin PR bitcoin-core/gui#223) 2021-06-25 04:04:56 +00:00
Andrew Poelstra
1bbd69a6af Merge 09bc7bfed1 into merged_master (Bitcoin PR bitcoin-core/gui#214) 2021-06-25 03:49:22 +00:00
Andrew Poelstra
d2d21096af Merge 434065a483 into merged_master (Bitcoin PR bitcoin-core/gui#219) 2021-06-25 03:33:14 +00:00
Andrew Poelstra
9acd1fc4e8 Merge 9307c588d0 into merged_master (Bitcoin PR #21293) 2021-06-25 02:44:43 +00:00
Andrew Poelstra
cb35ede634 Merge b59f2787e5 into merged_master (Bitcoin PR #18017) 2021-06-25 02:29:31 +00:00
Andrew Poelstra
359a5fb747 Merge 587c986ccf into merged_master (Bitcoin PR #21285) 2021-06-25 01:10:25 +00:00
Andrew Poelstra
1f8261dcae Merge 2e8116149c into merged_master (Bitcoin PR #21250) 2021-06-25 00:53:49 +00:00
Andrew Poelstra
10a3ccdab4 Merge 1b045b5eef into merged_master (Bitcoin PR #21053) 2021-06-25 00:38:22 +00:00
Andrew Poelstra
578ee6183f Merge a9335e4f12 into merged_master (Bitcoin PR #16546)
There are a few layers of bullshit to this PR.

First, there is the fact that it adds a functional test gated on a new
config flag which is disabled by default, so it actually adds broken
code with no tests, waiting to ruin your day 520 PRs later when #21935
enables the broken test.

Second, the test appears to be superficially nonsensical because it
generates two transactions from different wallets and tries to compare
them for byte-for-byte equality, which doesn't make sense (at least)
because change outputs are randomly located...so something fishy is
going on.

Of course, in Elements the transactions are *not* equal half the time
because the outputs are permuted, which may have let me quickly figure
out the issue, except...

Third, there is a red herring of a bug where the two transactions have
slightly different feerates. This turns out to be caused by
CWallet::CalculateMaximumSignedTxSize using differently sized dummy
transactions depending on whether watchonly outputs are included (this
fact is conveniently disguised by #17211 slightly changing this logic;
this is an unmerged PR in Core that Elements has a backport of an old
version of). And the two wallets have different watchonly settings.

A sub-red-herring is the fact that this bug results in a discrepancy
of 0.25 vbytes, so it does not appear in Core but does appear in
Elements (there is a 3/16 probability that we should be so unlucky...
we are).

But this is all irrelevant, because...

Fourth, this test is actually super bullshit. The way it works is by
constructing a PSBT legitimately, saving this to disk, then re-"signs"
using the external signer interface by using a mock signer that
COMPLETELY REPLACES THE TRANSACTION UNDER CONSTRUCTION. So it doesn't
matter what the fee output looks like and it doesn't matter what the
order of the outputs. Core does not detect this malfeasance and
neither does Elements. For some reason, Core has a functional test
that explicitly checks that you can do this even though it is insane
and it is hard to think of non-malicious reasons to do it.

Fifth, while Elements fails to detect that its external signer is
actually changing the transaction out from under it, it DOES assume
that this won't happen. In CWallet::SignPSBT it blithely un-replaces
the transaction, which undermines the functional test.

Sixth, the original PR where this test was introduced has comments
locked, so anyone who spent six hours reverse-engineering this idiotic
broken test, and is still feeling charitable enough to discuss it with
the Core developors, can go pound sand.

Anyway, just disabled the broken test and move on with our lives.
2021-07-27 00:19:01 +00:00
Andrew Poelstra
fb73bb4d4c Merge 78effb37f3 into merged_master (Bitcoin PR #21222) 2021-06-24 23:53:10 +00:00
Andrew Poelstra
ff26d9127f Merge 84f6c695c6 into merged_master (Bitcoin PR #21274) 2021-06-24 23:37:19 +00:00
Andrew Poelstra
968ee435a1 Merge c263c3d7d2 into merged_master (Bitcoin PR #19698)
I really dislike this PR, which inverts the meaning of the validation
flags used by unit tests, adds a zillion ~s to the source to handle
this, does a ton of iterations resulting in massive error message
spam if any new flags (e.g. Elements' NO_SIGHASH_BYTE) do surprising
things.

It also adds a new compiler warning, which I didn't fix to keep
the diff minimal .
2021-06-24 23:18:56 +00:00
Andrew Poelstra
6cfd41becd Merge d386b54239 into merged_master (Bitcoin PR bitcoin-core/gui#213)
We had renamed the "Copy URI" GUI action to "Copy address"; Core added
a new "Copy address" action. So I deleted the old "Copy URI" action and
just kept the new "Copy address" one.
2021-06-24 21:31:50 +00:00