Commit graph

698 commits

Author SHA1 Message Date
Glenn Willen
fd4ffa1787 Fix dependency of common on assetdir 2022-04-21 17:18:01 -07:00
Andrew Poelstra
36e5e2a7f1 Merge 9a154599fe into merged_master (Elements PR ElementsProject/elements#900)
Surprisingly easy to do. Almost all of the diff resolution was mechanically
  * replacing boost::variant with std::variant
  * replacing Optional with std::optional
     * then replacing `nullopt` with `std::nullopt`
  * updating the RPC functions for the new RPCArg::Default type
  * update the tests/ directory to make new (since 22) tests use arrays for
    createrawtransaction outputs
  * other ad-hoc changes to function parameters etc (not too many of these)

I had to "really" change the code in PrecomputePSBTData, which was introduced
in 22.0 and affected by PSET, but this function was like 8 lines long so it
was easy.

Reviewing the diff may be a bit difficult because of the mix of mechanical
changes and ad-hoc things. Probably the most straightforward thing to do
is to redo the merge, `sed -i` to fix the boost::variant and Optional stuff,
then diff the remaining conflicts against this commit.

TODO: grep for `blindpsbt` and you will see that this RPC is still referenced
in documentation and help text even though it was deleted. Need to fix this
in 0.21 in a separate PR.
2021-09-04 19:34:14 +00:00
Andrew Poelstra
6bd2a816e9 Merge b5889611c7 into merged_master (Bitcoin PR bitcoin/bitcoin#22234) 2021-08-02 21:18:02 +00:00
Andrew Poelstra
915d06019a Merge 34d1d6a112 into merged_master (Bitcoin PR bitcoin/bitcoin#22381) 2021-07-31 13:46:26 +00:00
Andrew Poelstra
ae15e5dc5d Merge 137f3b9ba3 into merged_master (Bitcoin PR bitcoin/bitcoin#22405) 2021-07-31 01:42:33 +00:00
Andrew Poelstra
47164a1e9c Merge ddc6979b8b into merged_master (Bitcoin PR bitcoin/bitcoin#19438) 2021-07-30 16:16:50 +00:00
Andrew Poelstra
bb8e5d1ce4 Merge a196c89317 into merged_master (Bitcoin PR bitcoin/bitcoin#22270)
Some PRs ago (in #19937) the bitcoin-util binary was added, which we
didn't notice and didn't rename to elements-util. This commit adds
some tests for it, which made me notice it ... so rename it here.
2021-07-28 18:18:31 +00:00
Andrew Poelstra
b413362d11 Merge ef8f2966ac into merged_master (Bitcoin PR bitcoin/bitcoin#22084) 2021-07-24 01:43:31 +00:00
Andrew Poelstra
3d6a5a2182 Merge 55a156fca0 into merged_master (Bitcoin PR bitcoin/bitcoin#21207)
git diff --color-moved=zebra is your friend
2021-07-19 03:15:44 +00:00
Andrew Poelstra
8a669eccfb Merge 7257e50dba into merged_master (Bitcoin PR bitcoin/bitcoin#20833) 2021-07-18 18:11:25 +00:00
fanquake
b5889611c7
Merge bitcoin/bitcoin#22234: build: Mark print-% target as phony.
fb7be92b09 Mark print-% target as phony. (Dmitry Goncharov)

Pull request description:

  .PHONY does not take patterns (such as print-%) as prerequisites.
  Have print-% depend on force and mark force as phony.

  This change ensures print-% rule works even when there is a file that matches the target.

  ```
  $ # on master
  $ make print-host
  host=x86_64-pc-linux-gnu
  $ touch print-host
  $ make print-host
  make: 'print-host' is up to date.
  $
  $ git co mark_print_as_phony
  Switched to branch 'mark_print_as_phony'
  $ make print-host
  host=x86_64-pc-linux-gnu
  $ touch force
  $ make print-host
  host=x86_64-pc-linux-gnu
  ```

ACKs for top commit:
  hebasto:
    ACK fb7be92b09, tested on Linux Mint 20.2 (x86_64).

Tree-SHA512: b89ae66aa8c7aa6a7ab5f0956f9eb3b3ef9d56994b60dc2a97d498d4c1bba537845c190723e8a10310280b1b35df2cd935cc30aeb76735cac2dc621ad7823772
2021-07-18 13:41:24 +08:00
Andrew Poelstra
95ce7de90f Merge 707ba8692b into merged_master (Bitcoin PR bitcoin/bitcoin#21966) 2021-07-17 20:20:55 +00:00
Andrew Poelstra
1fd44e5dfc Merge ee9befe8b4 into merged_master (Bitcoin PR bitcoin/bitcoin#21584) 2021-07-09 21:14:15 +00:00
Andrew Poelstra
99cc7a5245 Merge 2e30e328a7 into merged_master (Bitcoin PR bitcoin/bitcoin#19064) 2021-07-09 13:03:17 +00:00
Carl Dong
9fdc8afe11
devtools: Improve *-check.py tool detection
This is important to make sure that we're not testing tools different
from the one we're building with.

Introduce determine_wellknown_cmd, which encapsulates how we
should handle well-known tools specification (IFS splitting, env
override, etc.).
2021-07-07 19:31:37 +08:00
fanquake
84dd81fb5b
build: remove glibc backcompat requirement for Linux symbol checks 2021-07-06 15:21:17 +08:00
Andrew Poelstra
c4182106af Merge 2b45cf0bcd into merged_master (Bitcoin PR bitcoin/bitcoin#19521)
This is part of the "UTXO Set Statistics" project in Core, which aims
to make things like "checking coin supply" faster. This stuff, and
related things in coinstats.cpp, have always been broken for Elements
in the sense that we consider only explicit outputs and we ignore
assets (so everything just gets added together to get a meaningless
total). It probably wouldn't be too hard to restrict this to only
consider policyAsset, but it's out of scope for a rebase IMO.

Also, I think this situation is fine .. I don't understand the motivation
for this or why Core is merging this when they refuse to merge an address
index .. but I guess we'll see if there are users who care about this data
and who care about it being meaningful on Elements.

Also, apologies for the big diff -- there were some mechanical changes
to deal with CT amounts, but most of the changes related to the difference
in how fees are accounted for. While I'm not thrilled with this PR, its
functional test is really good! So I think what I eventually came up with
is internally consistent.
2021-07-04 19:51:38 +00:00
Andrew Poelstra
5f0c45b568 Merge ac219dcbcc into merged_master (Bitcoin PR bitcoin/bitcoin#19160) 2021-07-01 13:29:36 +00:00
Andrew Poelstra
0f00842a22 Merge 66fd3b28e8 into merged_master (Bitcoin PR bitcoin/bitcoin#21732) 2021-07-01 01:54:34 +00:00
Andrew Poelstra
dd87547295 Merge 2bce9329e8 into merged_master (Bitcoin PR bitcoin/bitcoin#21719) 2021-07-01 00:20:39 +00:00
Andrew Poelstra
a9ef79acbc Merge 1f14130cb0 into merged_master (Bitcoin PR #21575) 2021-06-30 03:43:01 +00:00
Andrew Poelstra
f2bd5dd18b Merge f0b457212f into merged_master (Bitcoin PR #21467) 2021-07-27 01:26:50 +00:00
Anthony Towns
ea68b3a572 [move-only] Rename versionbitsinfo to deploymentinfo 2021-06-30 08:19:12 +10:00
Anthony Towns
de55304f6e [refactor] Add versionbits deployments to deploymentstatus.h
Adds support for versionbits deployments to DeploymentEnabled,
DeploymentActiveAfter and DeploymentActiveAt. Also moves versionbitscache
from validation to deploymentstatus.
2021-06-30 08:18:58 +10:00
Andrew Poelstra
d1c574a296 Merge 0c9597ce7d into merged_master (Bitcoin PR #21304) 2021-06-29 22:13:24 +00:00
Anthony Towns
2b0d291da8 [refactor] Add deploymentstatus.h
Provides DeploymentEnabled, DeploymentActiveAt, and DeploymentActiveAfter
helpers for checking the status of buried deployments. Can be overloaded
so the same syntax works for non-buried deployments, allowing future
soft forks to be changed from signalled to buried deployments without
having to touch the implementation code.

Replaces IsWitnessEnabled and IsScriptWitnessEnabled.
2021-06-29 17:11:12 +10:00
Andrew Poelstra
d20af8f9ea Merge 602b038d43 into merged_master (Bitcoin PR #21366) 2021-06-29 00:32:18 +00:00
Andrew Poelstra
26fd4eb181 Merge a9d1b40d53 into merged_master (Bitcoin PR #21415) 2021-06-27 15:02:35 +00:00
Andrew Poelstra
3b7df88c5c Merge af6ee17545 into merged_master (Bitcoin PR #21405) 2021-06-27 02:24:17 +00:00
Andrew Poelstra
8c54b98b25 Merge e0bc27a14c into merged_master (Bitcoin PR #21404) 2021-06-26 22:39:09 +00:00
Andrew Poelstra
7602228cf0 Merge 92cf3a22e3 into merged_master (Bitcoin PR #21007) 2021-06-26 19:51:03 +00:00
Andrew Poelstra
af1483a39a Merge 48725e64fb into merged_master (Bitcoin PR #21209) 2021-06-26 04:06:30 +00:00
Andrew Poelstra
9a55d65515 Merge 92b7efcf54 into merged_master (Bitcoin PR #21148) 2021-06-25 23:51:25 +00:00
Andrew Poelstra
362765a450 Merge b9f41df1ea into merged_master (Bitcoin PR #20685) 2021-06-25 19:49:38 +00:00
Dmitry Goncharov
fb7be92b09 Mark print-% target as phony.
.PHONY does not take patterns (such as print-%) as prerequisites.
Have print-% depend on FORCE and mark FORCE as phony.

$ # on master
$ make print-host
host=x86_64-pc-linux-gnu
$ touch print-host
$ make print-host
make: 'print-host' is up to date.
$
$ git co mark_print_as_phony
Switched to branch 'mark_print_as_phony'
$ make print-host
host=x86_64-pc-linux-gnu
$ touch FORCE
$ make print-host
host=x86_64-pc-linux-gnu
2021-06-24 23:08:26 -04:00
Andrew Poelstra
cb35ede634 Merge b59f2787e5 into merged_master (Bitcoin PR #18017) 2021-06-25 02:29:31 +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
3bac1215b2 Merge 51397c0ff7 into merged_master (Bitcoin PR #20629) 2021-06-23 13:16:31 +00:00
Andrew Poelstra
271029357b Merge 9996b1806a into merged_master (Bitcoin PR #21064) 2021-06-23 03:30:31 +00:00
Andrew Poelstra
289e1aa494 Merge a1be08405d into merged_master (Bitcoin PR #20788) 2021-06-22 20:16:46 +00:00
Andrew Chow
e7dd046b03 Implement BlindPSBT 2021-06-22 14:42:19 -04:00
Andrew Poelstra
c0a01c55e9 Merge d202054675 into merged_master (Bitcoin PR #21052) 2021-06-21 14:45:12 +00:00
Andrew Poelstra
8e4b38c61e Merge 019aa248d9 into merged_master (Bitcoin PR #17920) 2021-06-18 16:23:40 +00:00
Andrew Poelstra
9245e976e7 Merge 43f3ada27b into merged_master (Bitcoin PR #19866) 2021-06-18 01:38:29 +00:00
Andrew Poelstra
81f3883b46 Merge 8ffaf5c2f5 into merged_master (Bitcoin PR #19935) 2021-06-17 20:19:16 +00:00
Andrew Poelstra
c60d414796 Merge 7b975639ef into merged_master (Bitcoin PR #19937) 2021-06-17 18:27:22 +00:00
Andrew Poelstra
c5a022192f Merge d7e2401c62 into merged_master (Bitcoin PR #18077) 2021-06-17 01:59:15 +00:00
Andrew Poelstra
6afa119596 Merge b6a71b80d2 into merged_master (Bitcoin PR #19055) 2021-06-16 22:36:48 +00:00
Andrew Poelstra
b9a8def365 Merge f1dbf92ff0 into merged_master (Bitcoin PR #20434) 2021-06-15 14:46:56 +00:00
Andrew Poelstra
e5d61f39b4 Merge 143bd108ed into merged_master (Bitcoin PR #19137) 2021-06-15 02:39:30 +00:00