Commit graph

3528 commits

Author SHA1 Message Date
Andrew Poelstra
b9a6573841 Merge d4300a10dd into merged_master (Bitcoin PR #21679) 2021-06-30 20:52:10 +00:00
Andrew Poelstra
a20f127ddd Merge a5e756b74e into merged_master (Bitcoin PR #21676) 2021-06-30 17:06:01 +00:00
Andrew Poelstra
95e11d5a9d Merge e7af2f35af into merged_master (Bitcoin PR #21666) 2021-06-30 12:53:47 +00:00
Andrew Poelstra
b945a1dacf Merge a1f0b8b62e into merged_master (Bitcoin PR #21634) 2021-06-30 12:41:09 +00:00
Andrew Poelstra
f2bd5dd18b Merge f0b457212f into merged_master (Bitcoin PR #21467) 2021-07-27 01:26:50 +00:00
Andrew Poelstra
770892540f Merge 6664211be2 into merged_master (Bitcoin PR #21574) 2021-06-29 22:00:51 +00:00
Andrew Poelstra
833ebac2fb Merge aa69471ecd into merged_master (Bitcoin PR #21572) 2021-06-29 21:16:38 +00:00
Andrew Poelstra
dc314b7d34 Merge 2b3e5bf4c0 into merged_master (Bitcoin PR #21613) 2021-06-29 21:03:11 +00:00
Andrew Poelstra
9d8cea4394 Merge c0160ea52e into merged_master (Bitcoin PR #21540) 2021-06-29 20:38:24 +00:00
Andrew Poelstra
31f571ed0d Merge 9ac8f6d7dd into merged_master (Bitcoin PR #21598) 2021-06-29 17:22:19 +00:00
Andrew Poelstra
e0ce471ef6 Merge 5c9b06db81 into merged_master (Bitcoin PR #21302) 2021-06-29 15:47:24 +00:00
Andrew Poelstra
c4faf2f836 Merge ad4bf8a945 into merged_master (Bitcoin PR #20459)
What an awful PR. This introduces Python-like runtime failures into the
RPC interface in case there are type mismatches between the documentation
and every possible return value from every RPC call. I fixed all the errors
that are triggered by the existing tests but there will be a long tail of
errors to come, I'm sure.
2021-06-30 16:10:11 +00:00
Andrew Poelstra
4b7d6fdcaa Merge 7aa0d8adf8 into merged_master (Bitcoin PR #21063) 2021-06-29 03:15:39 +00:00
Andrew Poelstra
ccd5ecbdde Merge 2b2ab9ab78 into merged_master (Bitcoin PR #21544) 2021-06-29 00:57:03 +00:00
Andrew Poelstra
d20af8f9ea Merge 602b038d43 into merged_master (Bitcoin PR #21366) 2021-06-29 00:32:18 +00:00
Andrew Poelstra
d39d57c704 Merge 1c7be9ab90 into merged_master (Bitcoin PR #20286)
I hate this PR.
2021-06-28 21:30:17 +00:00
Andrew Poelstra
2fe92c0077 Merge b1281b5d8f into merged_master (Bitcoin PR #21516) 2021-06-28 13:25:43 +00:00
Andrew Poelstra
1c58e32ee6 Merge 4132193617 into merged_master (Bitcoin PR #21040) 2021-06-27 21:04:51 +00:00
Andrew Poelstra
26fd4eb181 Merge a9d1b40d53 into merged_master (Bitcoin PR #21415) 2021-06-27 15:02:35 +00:00
Andrew Poelstra
a4a400ef64 Merge 993ecafa5e into merged_master (Bitcoin PR #21417) 2021-06-27 14:38:37 +00:00
Andrew Poelstra
b1fab9a7e6 Merge d25e28c20b into merged_master (Bitcoin PR #21083) 2021-06-27 14:26:06 +00:00
Andrew Poelstra
d16103e6c4 Merge b650c9140e into merged_master (Bitcoin PR #21141) 2021-06-27 01:12:01 +00:00
Andrew Poelstra
a64f85e647 Merge 1e57d14d96 into merged_master (Bitcoin PR #21035) 2021-06-26 23:44:41 +00:00
Andrew Poelstra
8c54b98b25 Merge e0bc27a14c into merged_master (Bitcoin PR #21404) 2021-06-26 22:39:09 +00:00
Andrew Poelstra
edf1915727 Merge eea6196c3d into merged_master (Bitcoin PR #21331) 2021-06-26 18:12:53 +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
7debcb2f14 Merge 362e901a17 into merged_master (Bitcoin PR #18466) 2021-06-25 18:07:46 +00:00
Andrew Poelstra
ba1bff7fdc Merge 8d37841cdf into merged_master (Bitcoin PR #21277) 2021-06-25 16:24:48 +00:00
Andrew Poelstra
359a5fb747 Merge 587c986ccf into merged_master (Bitcoin PR #21285) 2021-06-25 01:10:25 +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
5af69f3cb4 Merge 3a2d5bfeb3 into merged_master (Bitcoin PR #21201) 2021-06-24 14:15:01 +00:00
Andrew Poelstra
c1e4d9e7b0 Merge db656db2ed into merged_master (Bitcoin PR #19136) 2021-06-24 13:27:40 +00:00
Andrew Poelstra
29d002046c Merge 43981ee2c8 into merged_master (Bitcoin PR #21127) 2021-06-23 12:39:41 +00:00
Andrew Poelstra
f250da483b Merge 8e1913ae02 into merged_master (Bitcoin PR #21062) 2021-06-22 22:39:50 +00:00
Andrew Poelstra
5e2b1c591f Merge e498aeffbe into merged_master (Bitcoin PR #20211) 2021-06-26 18:18:18 +00:00
Andrew Poelstra
c2ebafe4a8 Merge f61c3a1090 into merged_master (Bitcoin PR #21125) 2021-06-21 15:09:51 +00:00
Andrew Poelstra
5313c74e69 Merge 4e946ebcf1 into merged_master (Bitcoin PR #20715) 2021-06-20 23:51:29 +00:00
Andrew Poelstra
9a3b7cda65 Merge 2c0fc856a6 into merged_master (Bitcoin PR #20464) 2021-06-20 19:00:02 +00:00
Andrew Poelstra
2885d86bf7 Merge 44f4bcd302 into merged_master (Bitcoin PR #20749)
More-or-less mechanical fixes to conflicts (checking upstream diff and chasing
compiler errors).
2021-06-20 14:54:25 +00:00
Andrew Poelstra
a0fc7ebcf2 Merge 7dc4807691 into merged_master (Bitcoin PR #20040)
This is a really non-trivial wallet refactor "effective value" which has been
in the Core queue for a pretty long time. There were a ton of merge conflicts
but they were mostly mechanical (all the benchmarks) or "take the Core side
of the diff" (most of wallet.cpp).

The two nontrivial things were:
  * In `SelectCoinsMinConf` in wallet.cpp I had to slightly move the asset
    filtering logic (but I didn't change it)
  * In `OutputGroup::Insert' in coinselection.cpp I changed the effective
    value computation to only consider policyAsset values
2021-06-20 13:56:56 +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
6f81fd3b1d Merge 16ae3368f2 into merged_master (Bitcoin PR #17350) 2021-06-18 20:50:35 +00:00
Andrew Poelstra
d6c85c5620 Merge 4b15ffe991 into merged_master (Bitcoin PR #20832) 2021-06-18 20:35:42 +00:00
Andrew Poelstra
76075ee96a Merge 45952dab9d into merged_master (Bitcoin PR #20932) 2021-06-18 15:00:45 +00:00
Andrew Poelstra
00d89d372d Merge 80486e7e2d into merged_master (Bitcoin PR #20952) 2021-06-18 03:22:42 +00:00
Andrew Poelstra
9e4190cd76 Merge bc51b99bd5 into merged_master (Bitcoin PR #20891) 2021-06-18 02:53:26 +00:00
Andrew Poelstra
81f3883b46 Merge 8ffaf5c2f5 into merged_master (Bitcoin PR #19935) 2021-06-17 20:19:16 +00:00