Commit graph

3774 commits

Author SHA1 Message Date
Andrew Poelstra
9a55d65515 Merge 92b7efcf54 into merged_master (Bitcoin PR #21148) 2021-06-25 23:51:25 +00:00
Andrew Poelstra
367a454b34 Merge d099894ec1 into merged_master (Bitcoin PR #20969) 2021-06-25 23:39:05 +00:00
Andrew Poelstra
362765a450 Merge b9f41df1ea into merged_master (Bitcoin PR #20685) 2021-06-25 19:49:38 +00:00
Andrew Poelstra
850dc4d082 Merge cfce346508 into merged_master (Bitcoin PR #21310) 2021-06-25 19:33:48 +00:00
Andrew Poelstra
7debcb2f14 Merge 362e901a17 into merged_master (Bitcoin PR #18466) 2021-06-25 18:07:46 +00:00
Andrew Poelstra
84cd7a3598 Merge fb67caebe2 into merged_master (Bitcoin PR #21297) 2021-06-25 17:38:00 +00:00
Andrew Poelstra
ba1bff7fdc Merge 8d37841cdf into merged_master (Bitcoin PR #21277) 2021-06-25 16:24:48 +00:00
Andrew Poelstra
ac89deaff7 Merge c0e44ee8e4 into merged_master (Bitcoin PR #21254) 2021-06-25 15:52:53 +00:00
Andrew Poelstra
e4751a715c Merge 1b1d8bde1c into merged_master (Bitcoin PR #21252)
Had to change a new fixed constant in a test. I'm not sure exactly why
this one is different on Elements.
2021-06-25 13:42:53 +00:00
Andrew Poelstra
e99a9c186a Merge 2059d32edb into merged_master (Bitcoin PR #21200) 2021-06-25 13:13:25 +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
cf1a11db0c Merge 9f3ffa2938 into merged_master (Bitcoin PR #21230) 2021-06-24 14:27:34 +00:00
Andrew Poelstra
5af69f3cb4 Merge 3a2d5bfeb3 into merged_master (Bitcoin PR #21201) 2021-06-24 14:15:01 +00:00
Andrew Poelstra
37c94c9100 Merge b805dbb0b9 into merged_master (Bitcoin PR #19809) 2021-06-24 13:52:54 +00:00
Andrew Poelstra
2cec742519 Merge 860f916803 into merged_master (Bitcoin PR #20524) 2021-06-24 13:40:22 +00:00
Andrew Poelstra
c1e4d9e7b0 Merge db656db2ed into merged_master (Bitcoin PR #19136) 2021-06-24 13:27:40 +00:00
Andrew Poelstra
5a654c9bab Merge 9017d55e7c into merged_master (Bitcoin PR #15946) 2021-06-24 02:56:40 +00:00
Andrew Poelstra
1c42ada28c Merge 69f7f50aa5 into merged_master (Bitcoin PR #20993) 2021-06-24 00:14:00 +00:00
Andrew Poelstra
937e79ce4d Merge 3c9d9d21e1 into merged_master (Bitcoin PR #21008) 2021-06-23 21:50:50 +00:00
Andrew Poelstra
5ac1d67769 Merge 489030f2a8 into merged_master (Bitcoin PR #20965) 2021-06-23 14:18:22 +00:00
Andrew Poelstra
59b1a731c8 Merge 8d6994f93d into merged_master (Bitcoin PR #21100) 2021-06-23 13:41:16 +00:00
Andrew Poelstra
6c0688628e Merge bf3189eda6 into merged_master (Bitcoin PR #21165) 2021-06-23 03:56:56 +00:00
Andrew Poelstra
401d0bb381 Merge e9c037ba64 into merged_master (Bitcoin PR #19884) 2021-06-23 03:43:29 +00:00
Andrew Poelstra
f8d2574a56 Merge 8d82eddee6 into merged_master (Bitcoin PR #19145) 2021-06-23 03:04:57 +00:00
Andrew Poelstra
a6af547c55 Merge 685c16fcb2 into merged_master (Bitcoin PR #21043) 2021-06-22 20:04:29 +00:00
Andrew Poelstra
50a0a6246b Merge d48f9e8ebb into merged_master (Bitcoin PR #21124) 2021-06-21 14:32:43 +00:00
Andrew Poelstra
e71719db1a Merge c4214d0e0d into merged_master (Bitcoin PR #21117) 2021-06-21 13:28:28 +00:00
Andrew Poelstra
77f846938e Merge b09ad737ee into merged_master (Bitcoin PR #20944) 2021-06-21 12:51:08 +00:00
Andrew Poelstra
323f9bf6cd Merge b401b09355 into merged_master (Bitcoin PR #21107) 2021-06-21 08:23:27 +00:00
Andrew Poelstra
bbfd887a43 Merge c969ab43c3 into merged_master (Bitcoin PR #21084) 2021-06-21 07:59:08 +00:00
Andrew Poelstra
0f6fcf55f7 Merge cf26ca3911 into merged_master (Bitcoin PR #21081) 2021-06-21 03:52:27 +00:00
Andrew Poelstra
bcd5f2207c Merge a6b1bf6439 into merged_master (Bitcoin PR #20267) 2021-06-21 02:52:43 +00:00
Andrew Poelstra
b8d3a6ea22 Merge ea5a50f92a into merged_master (Bitcoin PR #21042) 2021-06-21 01:40:03 +00:00
Andrew Poelstra
5313c74e69 Merge 4e946ebcf1 into merged_master (Bitcoin PR #20715) 2021-06-20 23:51:29 +00:00
Andrew Poelstra
81622629c1 Merge 384e090f93 into merged_master (Bitcoin PR #19509) 2021-06-20 20:00:04 +00:00
Andrew Poelstra
4fc9d12dc4 Merge 4c55f92c76 into merged_master (Bitcoin PR #20954) 2021-06-20 02:12:30 +00:00
Andrew Poelstra
7d94f4b120 Merge c8b83510f4 into merged_master (Bitcoin PR #20724) 2021-06-20 01:14:29 +00:00
Andrew Poelstra
561bf64d1b Merge 80e16cadd5 into merged_master (Bitcoin PR #20012)
Made some edits to rpc/client.cpp on the advice of test/functional/rpc_help.py
to make the "RPC conversion tables" consistent, but I have no idea what these
tables are or what they're for. I assume, given that nobody has noticed these
inconsistencies ever, that they're fine.
2021-06-19 16:30:37 +00:00
Andrew Poelstra
402bba0e4f Merge 9deba2de76 into merged_master (Bitcoin PR #20226)
Had to change a test vector to match our test framework's different deterministic
keys (when I produced these during the 0.21 rebase I made new random keys rather
than converting the existing ones, it appears).
2021-06-19 02:35:13 +00:00
Andrew Poelstra
6a7359d623 Merge 15a9df0706 into merged_master (Bitcoin PR #20964) 2021-06-19 01:19:46 +00:00
Andrew Poelstra
d6c85c5620 Merge 4b15ffe991 into merged_master (Bitcoin PR #20832) 2021-06-18 20:35:42 +00:00
Andrew Poelstra
a9ab76769e Merge 11cbd4bb54 into merged_master (Bitcoin PR #17556)
This PR eliminates "strange regtest=0 behavior" in a test which had forced
us to disable the test for Elements. Can re-enable now :)

I also removed the `chain_in_args` parameter to `TestNode`, which Steven added
in https://github.com/ElementsProject/elements/pull/533 (which itself replaces
unconditionally adding chain={} on the command-line, which was added in #458).
These were added in the 0.17 rebase to deal with the job of starting bitcoind,
which then did not support the `chain=` command-line arg as well as elementsd,
which back then required this command-line arg.

This was causing some issues with the "check -acceptnonstdtxn doesn't work on
mainnet" test because it would add -chain=elementsregtest to the command-line
of a daemon that was supposed to be connecting to mainnet/liquidv1. It is
possible to override this behavior, but since 0.20+ versions of elementsd and
bitcoind have essentially the same support for chain= options, it seemed
cleaner to just eliminate the diff.
2021-06-18 14:40:09 +00:00
Andrew Poelstra
6f0f1d4268 Merge 3734adba39 into merged_master (Bitcoin PR #20953) 2021-06-18 03:37:39 +00:00
Andrew Poelstra
9e4190cd76 Merge bc51b99bd5 into merged_master (Bitcoin PR #20891) 2021-06-18 02:53:26 +00:00
Andrew Poelstra
6e0871df92 Merge 32e59fc371 into merged_master (Bitcoin PR #20916) 2021-06-17 23:00:15 +00:00
Andrew Poelstra
89f673c0bd Merge 6af013792f into merged_master (Bitcoin PR #19315)
This uses a regtest-only RPC which checks that the chain is literally
"regtest". Since regtest is disabled in Elements (we use elementsregtest)
I weakened the check for this to just check that the chain name has
"regtest" somewhere in it. Hopefully this isn't too magical.
2021-06-17 17:31:47 +00:00
Andrew Poelstra
4b15a86287 Merge 675af2a515 into merged_master (Bitcoin PR #20852) 2021-06-17 16:16:41 +00:00
Andrew Poelstra
c3a8653b11 Merge 9c0b76c709 into merged_master (Bitcoin PR #20876) 2021-06-17 15:30:21 +00:00
Andrew Poelstra
8f25ea200d Merge 5082324225 into merged_master (Bitcoin PR #20688) 2021-06-17 02:46:51 +00:00