Commit graph

212 commits

Author SHA1 Message Date
Byron Hambly
833eaacade
ci: use 24.04 instead of lunar for tidy and fuzz ci 2025-04-29 13:49:55 +02:00
Byron Hambly
0b1508bf01
ci: fix lint issues 2025-04-17 11:06:32 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Tom Trevethan
9f84d01252 Merge 8f3021155e into merged_master (Bitcoin PR bitcoin/bitcoin#26643) 2025-03-28 14:46:40 +00:00
Byron Hambly
6b82cfa0aa
Merge df4e99dca3 into merged_master (Elements PR #1423) 2025-02-28 15:25:43 +02:00
Pablo Greco
4058bd114b Remove extra ; in confidential.h 2025-02-25 14:57:10 -08:00
Byron Hambly
d8cd03906e
Merge 72a5e4117c into merged_master (Elements PR #1391)
Adds a FIXME in wallet_sendall.py
2025-02-11 15:46:34 +02:00
Andrew Poelstra
a3b7e71a3d
transaction: refuse to deserialize TxOuts with null values
In Bitcoin Core the notion of a "null" amount (and therefore a "null"
txout) is one which cannot be serialized or deserialized. In Core this
is implemented using a value of -1.

In Elements we use the CT notion of "nullness" which is that the flag on
the confidential value is 0. See d53479c9ff
which implemented this. This is reasonable, but because we don't have
checks on deserialization, we can deserialize objects that cannot be
reserialized.

In particular, in coins.h, we deserialize a coin by deserializing its
txout. When reserializing we assert that !out.IsNull(). This assertion
is hit by the `coins_deserialize` fuzztest.

There are a few potential fixes here:

* Remove the assertion from coins.h, which is there to catch logic bugs
  in Core, on the assumption that if they have no bugs then we don't
  either. This seems like a bad idea.
* Change "nullness" for amounts to be an encoding of -1, like in Core.
  This seems dangerous because we call `GetAmount` all over the place,
  and if this could return the -1 amount, this will likely blow
  something up. Probably this is safe for the same reason it is in Core
  -- that is, we never create null txouts except as sentinel values. But
  do you wanna bet that this is true now? That it'll always be true?
* Same as above, but assert that the amount is not null. This is safer
  than just blindly hoping that no overflows will occur but still not
  obviously safe.
* Refuse to deserialize null CT objects. This is impossible because we
  use null nonce values in txouts.
* Refuse to deserialize null CT values. Similarly, this is impossible
  because we use null values in null asset issuances, which are legal.
* Refused to deserialize CTxOuts with null values or assets.

We are going with the latter solution, because it is narrowly scoped,
does not increase the "crash surface" (we throw an exception, and we
already throw exceptions for other kinds of invalid serializations),
and is very unlikely to cause bugs (null values are invalid on the
network anyway; this is the first check in VerifyAmounts) (so are null
assets for that matter, which we maybe also should refuse to
deserialize).
2025-02-06 21:31:47 +00:00
Byron Hambly
a6f8dc6a86
tidy: fixes for clang tidy ci job 2024-12-04 14:16:45 +02:00
Byron Hambly
187f6ed938 Merge b936123110 into merged_master (Bitcoin PR bitcoin/bitcoin#25963) 2024-11-25 14:57:30 +02:00
Byron Hambly
3fd262a515 Merge 0f35f4ddf4 into merged_master (Bitcoin PR bitcoin/bitcoin#25786) 2024-11-04 12:32:04 +02:00
Byron Hambly
593c724509 Merge c90f86e4c7 into merged_master (Bitcoin PR bitcoin/bitcoin#25694) 2024-10-18 14:59:49 +02:00
Pablo Greco
3dfd7a4e9f Linter fixes 2023-08-31 14:47:07 -07:00
Byron Hambly
1a05735c3a Merge a6c3da131c into merged_master (Bitcoin PR bitcoin/bitcoin#24350) 2023-07-01 06:21:55 +00:00
Byron Hambly
4e5e47d2d5 Merge 5f4c07b799 into merged_master (Bitcoin PR bitcoin/bitcoin#24136) 2023-06-29 13:43:18 +00:00
Byron Hambly
47626b5a64 Merge 623745ca74 into merged_master (Bitcoin PR bitcoin/bitcoin#23912) 2023-06-14 15:44:11 +00:00
Byron Hambly
7925c2a451 Merge 224e90d9fd into merged_master (Bitcoin PR bitcoin/bitcoin#23336) 2023-05-15 12:27:08 +00:00
Byron Hambly
8299bec8a2 Merge c001da306b into merged_master (Bitcoin PR bitcoin/bitcoin#23325) 2023-05-14 10:52:15 +00:00
James Dorfman
3b1c914a64 Merge c53e95f22c into merged_master (Bitcoin PR bitcoin/bitcoin#23137) 2023-05-14 07:06:13 +00:00
Byron Hambly
498907a233 Merge 816e15ee81 into merged_master (Bitcoin PR bitcoin/bitcoin#22951) 2023-05-09 11:50:39 +00:00
Hennadii Stepanov
306ccd4927
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
- 2021: f47dda2c58
- 2020: fa0074e2d8
- 2019: aaaaad6ac9
2022-12-24 23:49:50 +00:00
Andrew Chow
c1a84f108e wallet: Move fee underpayment check to after fee setting
It doesn't make sense to be checking whether the fee paid is underpaying
before we've finished setting the fees. So do that after we have done
the reduction for SFFO and change adjustment for fee overpayment.
2022-12-09 14:52:26 -05:00
Jon Atack
6b24dfe24d CBlockLocator: performance-move-const-arg Clang tidy fixups
Co-authored-by: "Pieter Wuille <pieter@wuille.net>"
Co-authored-by: "Vasil Dimov <vd@FreeBSD.org>"
Co-authored-by: "MarcoFalke <falke.marco@gmail.com>"
2022-08-31 15:10:26 +02:00
MacroFake
fa3be799fe
Add time helpers
To be used in the next commit
2022-08-05 14:45:02 +02:00
MacroFake
fa2247a9f9
refactor: Make CTransaction constructor explicit
It involves calculating two hashes, so the performance impact should be
made explicit.

Also, add the module to iwyu.
2022-07-25 12:16:54 +02:00
MarcoFalke
a6c3da131c
Merge bitcoin/bitcoin#24350: Primitives: Correct CTransaction deserialization docstring
d4b3483cec Primitives: Correct CTransaction deserialization docstring (TheCharlatan)

Pull request description:

  Since https://github.com/bitcoin/bitcoin/pull/8589 CTxWitness was removed and instead replaced with CScriptWitness inside each CTxIn.

ACKs for top commit:
  w0xlt:
    ACK d4b3483

Tree-SHA512: 02bb73e8a7d1fc449e4776a162009261baecc573837fade74ad7d76b3cd63200424e02fd0abd000c63706072f2ab3c95d3053139495b81347463f43e56192ca9
2022-02-19 09:35:10 +01:00
TheCharlatan
d4b3483cec
Primitives: Correct CTransaction deserialization docstring
Since https://github.com/bitcoin/bitcoin/pull/8589 CTxWitness was
removed and instead replaced with CScriptWitness inside each CTxIn.
2022-02-15 12:27:08 +01:00
MarcoFalke
fa4339e4c1
Extract CTxIn::MAX_SEQUENCE_NONFINAL constant 2022-01-26 15:10:44 +01:00
Hennadii Stepanov
f47dda2c58
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
* 2020: fa0074e2d8
* 2019: aaaaad6ac9
2021-12-30 19:36:57 +02:00
MarcoFalke
fa4ec1c0bd
Make GenTxid boolean constructor private 2021-10-22 12:32:16 +02:00
glozow
d50fbd4c5b create explicit GenTxid::{Txid, Wtxid} ctors 2021-10-21 16:26:59 +01:00
Andrew Poelstra
ba8273ac94 lint: fix non-pylint linter errors
Includes fixing all the spelling mistakes that are our fault,
but not those present upstream in Core.
2021-10-15 00:20:20 +00:00
fanquake
d09071da5b
[MOVEONLY] consensus: move amount.h into consensus
Move amount.h to consensus/amount.h.
Renames, adds missing and removes uneeded includes.
2021-09-30 07:41:57 +08: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 Chow
5391095205 Output PSBTOutputs with aux info from ConstructTransaction
Output PSBTOutputs with blinding pubkey and index info from
ConstructTransaction so that these can be added to PSBTs later.
2021-06-22 14:42:19 -04:00
Andrew Chow
e860cd0f42 Add a PSBT constructor for providing the version 2021-06-22 13:54:50 -04:00
Andrew Poelstra
27930edc9c Merge 4a540683ec into merged_master (Bitcoin PR #20813) 2021-06-16 14:11:07 +00:00
Andrew Poelstra
8b52d33ea2 Merge dff0f6f753 into merged_master (Bitcoin PR #20611) 2021-06-14 14:41:00 +00:00
Andrew Poelstra
939d8ee135 Merge ade38b6ee8 into merged_master (Bitcoin PR #20588)
o.O apparently the `tx_aux` argument to `createrawpegin` was literally unused
2021-06-14 02:19:09 +00:00
Andrew Poelstra
f2a0050f31 primitives: do not de/serialize asset issuance in bitcoin mode
Fixes a fuzztest failure related to `g_con_elementsmode`.
2021-04-28 22:33:34 +00:00
Andrew Poelstra
68bfd70b43 ci: various linter / CI compiler error fixes
Includes changing TRUE to OP_TRUE for anyone-can-spend output name,
to avoid symbol conflict on win64 builds, which is really obnoxious.
2021-03-26 17:33:04 +00:00
MarcoFalke
fa0074e2d8
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-
2020-12-31 09:45:41 +01:00
Wladimir J. van der Laan
dff0f6f753
Merge #20611: Move TX_MAX_STANDARD_VERSION to policy
fade6195b1 Move TX_MAX_STANDARD_VERSION to policy (MarcoFalke)

Pull request description:

  `primitives` should only be used for the raw datastructures (parsing and format). It is not the right place to document relay policy.

ACKs for top commit:
  laanwj:
    Code review ACK fade6195b1
  lontivero:
    Concept ACK https://github.com/bitcoin/bitcoin/pull/20611/commits/fade6195b1c230edd561443637a7bde81c2594a4

Tree-SHA512: f809c4aecd14d7e9feaa7b50b9c0697232991eef36190cd960bcfb0ad6e20c71a4f6aab48c7747cf8a681eb14feda60c55b09a37f128673d519567224f29cd97
2020-12-15 22:46:49 +01:00
MarcoFalke
fade6195b1
Move TX_MAX_STANDARD_VERSION to policy
Also remove extraneous whitespace, should be reviewed with --ignore-all-space
2020-12-10 11:12:08 +01:00
MarcoFalke
faac31521b
Remove unused and confusing CTransaction constructor 2020-12-07 14:59:33 +01:00
Andrew Poelstra
f327fa97f2 Merge c2c4dbaebd into merged_master (Bitcoin PR #19988) 2020-11-30 19:05:03 +00:00
Andrew Poelstra
850b0e367b Merge 655937ebcb into merged_master (Bitcoin PR #19845) 2020-11-29 23:08:29 +00:00
Andrew Poelstra
54f2d85914 Merge 34eb236258 into merged_master (Bitcoin PR #19326) 2020-11-27 00:39:12 +00:00
Andrew Poelstra
0ddf4fafae Merge f7c73b03d9 into merged_master (Bitcoin PR #19569) 2020-11-26 23:15:28 +00:00
Andrew Poelstra
c4f517db76 Merge dcacea096e into merged_master (Bitcoin PR #19032)
This finally retires the old serialization framework, so I had to implement
the new serialization for all the Elements types. So there's a fair bit of
new code here but it's all straightforward rearrangements of the old code.
Was able to remove some const casts which was nice.
2020-11-26 01:08:50 +00:00