Commit graph

22553 commits

Author SHA1 Message Date
Philippe McLean
0936031b9a Correct help for getsidechaininfo RPC
- described order of current_fedpegscripts array was incorrect
2023-01-26 17:54:48 -08:00
Glenn Willen
15dbe64100 Remove stray comment 2023-01-25 09:31:03 -08:00
Glenn Willen
e62215628c Update documentation 2023-01-24 22:34:37 -08:00
Glenn Willen
e8475e7edd Fix stuck IBD when discarding unwanted headers from peers.
When receiving unwanted headers from a peer, first check whether we have
recent "best known block" state for that peer. If not, accept one batch
of headers to refresh it. Otherwise, we can become stuck in a state where
we need blocks, but we don't know which peers have those blocks available.
This especially happens during startup, when we don't have this information
for any peers until we start processing header messages.
2023-01-24 22:05:36 -08:00
Glenn Willen
8cad8cda44 Further fixes from code review 2023-01-04 16:33:35 -08:00
Glenn Willen
b9b7f6543a Apply suggestions from code review
Co-authored-by: Byron Hambly <byron@hambly.dev>
2023-01-04 15:32:04 -08:00
Glenn Willen
29345e9e12 pgreco's startup crash fix 2022-12-12 09:53:44 -08:00
Glenn Willen
fba37b74b4 Move enough-headers check up, rejecting excess headers when received. 2022-12-12 09:53:44 -08:00
Glenn Willen
394e59d38d Politely and safely refuse getheaders requests for headers we have trimmed. 2022-12-12 09:53:44 -08:00
Glenn Willen
763d29895f Fix deserialization issues in certain functional tests 2022-12-12 09:53:44 -08:00
Glenn Willen
7e6fe4a5ba Don't let header syncing get too far ahead of block syncing 2022-12-12 09:53:44 -08:00
Glenn Willen
f5c79950a1 When people ask us for headers we do not have (over REST or RPC), do something reasonable. 2022-12-12 09:53:42 -08:00
Glenn Willen
4f0da3ce3d Trim headers when flushing to disk, and reduce flush interval from 1h to 5min. 2022-12-12 09:46:07 -08:00
Glenn Willen
eff6be337f Trim headers when loading block index from disk. 2022-12-12 09:46:07 -08:00
Glenn Willen
7c555578b7 Add a flag for header-trimming; clear P2P network feature bits when enabled. 2022-12-12 09:46:07 -08:00
Glenn Willen
68eb0864cb Refactor CBlockIndex to make proof and dynafed fields optional. 2022-12-12 09:46:04 -08:00
Pablo Greco
2c7335fecc Remove duplicated code from merge 2022-11-25 12:54:09 -03:00
Steven Roose
30f02624c7
Have testproposedblock return RPC_VERIFY_ALREADY_IN_CHAIN
Instead of RPC_VERIFY_ERROR when the block is already in the chain.
2022-11-24 14:08:51 +00:00
James Dorfman
5c82e351a9
Merge pull request #1194 from andreabonel/add_back_missing_field_in_getblock
Add missing field 'signblock_challenge' back to getblock
2022-11-23 11:23:54 -05:00
Andrew Poelstra
1339dae913
Merge ElementsProject/elements#1167: Add native support for liquidtestnet
c6e074e25b liquidtestnet: Fix chain name in windows installer (Pablo Greco)
d0f391cfdb liquidtestnet: Add style for Elements-Qt (Pablo Greco)
48ddfbf8d7 liquidtestnet: Add fixed seeds (Pablo Greco)
3b34c8e927 liquidtestnet: Add seed nodes (Pablo Greco)
0d1964766f liquidtestnet: Accept multi OP_RETURN (Pablo Greco)
f955cb3d9c liquidtestnet: Add chainparams (Pablo Greco)
0fa20d006d CCustomParams: Move some defaults away from UpdateFromArgs (Pablo Greco)
e9df51121f Add text version of the fixed seeds for liquidv1 and liquidtestnet (Pablo Greco)

Pull request description:

  Currently using liquidtestnet requires a big config file, which is error-prone and uncomfortable for users, this MR adds support for just using `-chain=liquidtestnet`.

  There are a few things that need to be discussed/addressed

  1. Main port (currently set to 18891 because that's the one used originally, and the one that's configured in `liquidtestnet.com`)
  1. RPC and extra ports, I just chose some non-overlapping ports that are "close" to the ones in the other liquid/elements networks.
  1. Icon color, I just used something different than `liquidv1` and `elementsregtest`, suggestions accepted 😉
  1. `liquid-testnet.blockstream.com` is still using port 18892, it will be changed to 18891 soon.
  1. both seeds are just CNAME dns records at the moment, they should be changed to real seed nodes (no changes in code required, but important for review)

ACKs for top commit:
  delta1:
    ACK c6e074e
  wintercooled:
    ACK c6e074e25b
  apoelstra:
    utACK c6e074e25b

Tree-SHA512: 48c17b8b90ba5a33ae987935ffb368737167f6ca5ae772f6dd8c0c5e7efb39355d81e2677cd02d3e22984f2592fdd67caaf838003902b3c827f6ade01f18a040
2022-11-23 15:31:39 +00:00
Andrea Bonel
5d496b81f7 Add missing field 'signblock_challenge' back to getblock 2022-11-22 18:12:41 -03:00
Pablo Greco
58b5fa0dbf
Merge pull request #1186 from achow101/createfunded-explicit-value
Add include_explicit to walletcreatefundedpsbt
2022-11-21 17:15:58 -03:00
Andrew Chow
9dbf0b6f55 wallet, rpc: Add include_explicit to walletcreatefundedpsbt 2022-10-18 16:52:31 -04:00
Andrew Chow
a584133bd6 wallet: Add include_explicit to FillPSBT 2022-10-18 16:52:31 -04:00
Andrew Chow
462c873639 blindpsbt: Expose CreateBlind{Asset,Value}Proof
Make these two functions available to external callers.
CreateBlindValueProof is a wrapper around the static function to avoid
requiring callers to parse things into secp256k1 objects.
2022-10-18 16:52:31 -04:00
Pablo Greco
816585db1a
Merge pull request #1182 from jgriffiths/fix_blind_reissuance_amount_proof_output
rpc: decodepsbt: fix check for blind_reissuance_amount_proof output
2022-10-18 09:32:07 -03:00
Pablo Greco
eca4cd9259
Merge pull request #1169 from andreabonel/fix_windows_elements_company
Fix company for Windows exes
2022-10-15 18:09:44 -03:00
Glenn Willen
6b4228e3a5 Preserve blinding key when parsing taproot address. 2022-10-11 15:30:04 -07:00
Pablo Greco
285a18dbe9
Merge pull request #1173 from andreabonel/fix_issue_1120
Fix location for default cookie path
2022-10-05 22:57:29 -03:00
Jon Griffiths
e2348dadf3
PSET: VerifyBlindValueProof: fail verification if the value or asset commitment is missing
It is arguable whether attempting a value proof without an asset
commitment should be treated as incomplete or incorrect blinding. Since
the asset commitment is required to produce the value proof in the first
place, failing to provide it in the source PSET and thus at this call
site is treated as an error.

This does not change the existing behaviour since a missing asset
or value commitment in this function would already cause it to fail.

Future work on the blinding iterface should likely return the blinding
state directly from the verify calls and remove the duplicated mapping of
blinding error codes to transaction blinding error codes, instead of the
verify functions returning just true/false.
2022-10-06 09:12:02 +13:00
Jon Griffiths
5895fb10bb
rpc: decodepsbt: fix check for blind_reissuance_amount_proof output 2022-10-05 23:38:54 +13:00
Andrea Bonel
86db1b70e9 Fix location for default cookie path 2022-09-27 18:56:20 -03:00
Andrew Poelstra
e5e3ec2700
wallet: account for issuances during coin selection
Prior to coin selection we need to indicate that the issuances will take
extra space, otherwise we may fail to select enough coins to cover our
fees, triggering the new "fee needed exceeds fees available" assertion.
2022-09-22 13:20:29 +00:00
Andrew Poelstra
79fd90f064
wallet: extend fix to "dropped change is the last blinded output" case 2022-09-20 21:17:47 +00:00
Andrew Poelstra
fac694be4c
wallet: don't clear out all the blinding data when dropping change
The Elements 22 blinding logic has an edge case where when we drop change,
leaving only a single blinded output, we recompute a bunch of blinding
data to handle the potential for us to have 0 inputs and 1 output to blind.
(BlindTransaction will fail in this case because it cannot make the
transaction balance with only one output to mess with.)

In this recomputation, we dropped more data than we meant to, causing us
to incorrectly blind an output.
2022-09-20 17:40:47 +00:00
Andrew Poelstra
23e91d0ef8
wallet: fix some fee calculation bugs
First, this reverts commit ca2d72ae8b to reinstate
an assertion that was added in Bitcoin #22686. It did not compile because our
`change_and_fee` variable is a map rather than number; I changed it to use
`map_change_and_fee.at(policyAsset)` to match the equivalent change 2 lines down
from a5d97b363b (merge of Bitcoin #22008).

Then fix the following bugs:

1. Change the new test in rpc_fundrawtransaction.py to bump the -maxtxfee value,
   which we'd otherwise exceed, failing the test and masking actual failures.
   (This was just caused by the extreme fee settings of the test combined with
   Elements' large transactions.)
2. Change the fee-output size estimation for `tx_noinputs_size` to be 46 rather
   than 44 bytes; we forgot that even null surjection/rangeproofs need a 0 byte
   when output witnesses are present. This mistake triggered the new assertion.
3. Correct the logic in which change outputs are sometimes dropped even when
   they are the only blinded output in a transaction with blinded inputs. This
   would cause the new test to fail with `bad-txn-inputs-ne-outputs`; I'm very
   surprised that no existing tests hit this.

   (I have an existing comment block in this code where I "promise" that I had
   a good reason for doing something mysterious related to blinding. I was not
   able to reverse-engineer my intention here, though I think it is related to
   this, but since I couldn't understand it I just left this block intact and
   worked around it.)
4. This then triggered the assertion again since the coin selection code
   assumes that sufficiently-small change will always be dropped. If we prevent
   this drop we will have under-funded the transaction.

   To fix this we add Yet Another Flag `may_need_blinded_dummy` in which we add
   extra weight to `tx_noinputs_size` in the case that we're doing a blinded tx
   but have no blind destinations. We turn this off after coin selection if it
   turns out that we don't have any blinded inputs, though ofc at that point
   much of the damage/inefficiency has already been done..
5. Fix some constants in other functional tests which assumed precise fee
   calculations; these precise values changed because of fixes (2) and (4).

There is one new FIXME, which is that the "dummy change" value will now be a
zero-valued OP_RETURN but we still put a full-size rangeproof and surjection
proof on it. There is some plausible privacy benefit to this but not much,
and wasting 5000+ bytes rather than the ~65 needed for an exact-value proof
is not worth it. We will fix this in the future when we overhaul the wallet
blinding logic.
2022-09-20 17:39:24 +00:00
Glenn Willen
2273079c45
elements: Fix build by removing newly-added assertion from upstream that doesn't make sense with assets 2022-09-20 17:38:44 +00:00
Andrew Chow
dfc3e891d7
wallet: Assert that enough was selected to cover the fees
When the fee is not subtracted from the outputs, the amount that has
been reserved for the fee (change_and_fee - change_amount) must be
enough to cover the fee that is needed. It would be a bug to not do so,
so use an assert to make this obvious if such a situation were to occur.

Github-Pull: bitcoin/bitcoin#22686
Rebased-From: d9262324e8
2022-09-20 17:38:44 +00:00
Andrea Bonel
88503bc4e7 Fix company for Windows exes 2022-09-09 17:04:51 +00:00
Pablo Greco
d0f391cfdb liquidtestnet: Add style for Elements-Qt 2022-09-09 07:06:18 -03:00
Pablo Greco
48ddfbf8d7 liquidtestnet: Add fixed seeds 2022-09-08 19:02:07 +00:00
Pablo Greco
3b34c8e927 liquidtestnet: Add seed nodes 2022-09-08 19:01:54 +00:00
Pablo Greco
0d1964766f liquidtestnet: Accept multi OP_RETURN 2022-09-08 19:01:39 +00:00
Pablo Greco
f955cb3d9c liquidtestnet: Add chainparams 2022-09-08 19:01:27 +00:00
Pablo Greco
0fa20d006d CCustomParams: Move some defaults away from UpdateFromArgs 2022-09-08 19:01:27 +00:00
Byron Hambly
661c6c7094
feat: change getnewblockhex to take multiple commitments
Modifies the getnewblockhex json rpc call to accept an array of
commitments instead of a single commitment.

Backwards compatibility is maintained by first attempting to parse as a
string for a singular commitment.
2022-09-07 14:43:10 +02:00
Andrew Chow
2bf627e282 psbt: Fix check for missing asset and its proof 2022-09-06 15:57:21 -04:00
Andrew Chow
6e6a92209c psbt: Store m_asset_proof for PSBT_IN_ELEMENTS_ASSET_PROOF 2022-09-06 15:56:57 -04:00
Andrew Chow
547b3e30ca psbt: Check subkey_len not key.size() 2022-09-06 15:56:39 -04:00
Pablo Greco
b4935a51c0
Merge pull request #1157 from achow101/explicit-pset-fields
pset: Add input explicit value, assets, and proofs, and issuance blinding flag
2022-09-06 16:00:45 -03:00