Commit graph

55 commits

Author SHA1 Message Date
Byron Hambly
0c1e24ab17 Merge 5aa0c82ccd into merged_master (Bitcoin PR bitcoin/bitcoin#25325) 2025-05-02 15:01:30 +02:00
Byron Hambly
14af5f2c3c Merge 8126551d54 into merged_master (Bitcoin PR bitcoin/bitcoin#27011) 2025-04-05 16:54:52 +02:00
Byron Hambly
5376805631 Merge c8cb62272e into merged_master (Bitcoin PR bitcoin/bitcoin#26999) 2025-04-05 08:34:22 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Byron Hambly
a6f8dc6a86
tidy: fixes for clang tidy ci job 2024-12-04 14:16:45 +02:00
James Dorfman
db3aa6dd4a Merge 7008087548 into merged_master (Bitcoin PR bitcoin/bitcoin#24410) 2024-09-06 06:21:07 +00:00
Byron Hambly
dfc4ef427a Merge fa65f26f4d into merged_master (Bitcoin PR bitcoin/bitcoin#24237) 2023-06-30 09:30:02 +00:00
Byron Hambly
e6b8c52041 Merge 1f7acfdcca into merged_master (Bitcoin PR bitcoin/bitcoin#24024) 2023-06-19 09:48:16 +00:00
Byron Hambly
7878ba47b9 Merge c561f2f06e into merged_master (Bitcoin PR bitcoin/bitcoin#23497) 2023-06-19 09:28:31 +00:00
James Dorfman
c134b5a012 Merge 064c729a96 into merged_master (Bitcoin PR bitcoin/bitcoin#23512) 2023-05-31 06:23:55 +00:00
Byron Hambly
5c6f2e0a35 Merge 36d184d0c8 into merged_master (Bitcoin PR bitcoin/bitcoin#22508) 2023-05-25 08:15:02 +00:00
Byron Hambly
498907a233 Merge 816e15ee81 into merged_master (Bitcoin PR bitcoin/bitcoin#22951) 2023-05-09 11:50:39 +00:00
Martin Leitner-Ankerl
9f947fc3d4 Use PoolAllocator for CCoinsMap
In my benchmarks, using this pool allocator for CCoinsMap gives about
20% faster `-reindex-chainstate` with -dbcache=5000 with practically the
same memory usage. The change in max RSS changed was 0.3%.

The `validation_flush_tests` tests need to be updated because
memory allocation is now done in large pools instead of one node at a
time, so the limits need to be updated accordingly.
2023-03-23 19:38:38 +01:00
James Dorfman
400c44abcc Merge 9faa4b68db into merged_master (Bitcoin PR #22232) 2023-03-16 04:51:52 +00:00
Pieter Wuille
59e6828bb5 Add deterministic mode to CCoinsViewCache 2023-02-02 09:00:15 -05:00
Pieter Wuille
bb00357add Make test/fuzz/coins_view exercise CCoinsViewCache::Sync() 2023-01-30 13:11:53 -05: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
Carl Dong
0848db9c35 fuzz: Remove useless GetUTXOStats fuzz case
In the GetUTXOStats fuzz case, GetUTXOStats is always called with a
CCoinsViewCache. Which is guaranteed to throw a std::logic_error when
its ::Cursor() method is called on the first line of GetUTXOStats.

In the fuzz case, we basically catch this logic error and declare
victory if we caught it.

There is no point to fuzzing this deterministic logic.

Confirmed with IWYU that the node/coinstats.h #include is no longer
necessary.
2022-05-20 16:33:24 -04:00
MarcoFalke
fad81548fa
test: Avoid testing negative block heights 2022-02-02 15:32:06 +01:00
Ryan Ofsky
ce95fb36af Remove cs_main lock annotation from ChainstateManager.m_blockman
BlockManager is a large data structure, and cs_main is not required to
take its address or access every part of it. Individual BlockManager
fields and methods which do require cs_main like m_block_index and
LookupBlockIndex are already annotated separately, and these other
annotations describe locking requirements more accurately and do a
better job enforcing thread safety.

Since cs_main is not needed to access the address of the m_block object,
this commit drops cs_main LOCK calls which were added pointlessly to
satisfy this annotation in the past.

Co-authored-by: Carl Dong <contact@carldong.me>
2022-01-11 05:11:00 -05:00
Russell Yanofsky
90fc8b089d Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
MarcoFalke
fa3e0da06b
policy: Treat taproot as always active 2021-11-16 08:20:33 +01:00
Andrew Poelstra
214d9055ac fuzz: replace every fuzzer-controlled loop with a LIMITED_WHILE loop
Blindly chose a cap of 10000 iterations for every loop, except for
the two in script_ops.cpp and scriptnum_ops.cpp which appeared to
(sometimes) be deserializing individual bytes; capped those to one
million to ensure that sometimes we try working with massive scripts.

There was also one fuzzer-controlled loop in timedata.cpp which was
already capped, so I left that alone.

git grep 'while (fuzz' should now run clean except for timedata.cpp
2021-11-12 19:51:55 +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
3c48d95401 Merge 7317e14a44 into merged_master (Bitcoin PR bitcoin/bitcoin#22263) 2021-07-28 16:09:13 +00:00
Andrew Poelstra
34da23bd1a Merge a55904a80c into merged_master (Bitcoin PR bitcoin/bitcoin#21866)
Paying the piper for some lazy use of globals, including ones I added
in 8e770d3f21

Had to add another couple methods to interfaces::Chain
2021-07-29 13:18:11 +00:00
Andrew Poelstra
08bd31102a Merge a9435e3445 into merged_master (Bitcoin PR bitcoin/bitcoin#22065) 2021-07-21 12:44:46 +00:00
MarcoFalke
9faa4b68db
Merge bitcoin/bitcoin#22232: refactor: Pass interpreter flags as uint32_t instead of signed int
fa621ededd refactor: Pass script verify flags as uint32_t (MarcoFalke)

Pull request description:

  The flags are cast to unsigned in the interpreter anyway, so avoid the confusion (and fuzz crashes) by just passing them as unsigned from the beginning.

  Also, the flags are often inverted bit-wise with the `~` operator, which also works on signed integers, but might cause confusion as the sign bit is flipped.

  Fixes #22233

ACKs for top commit:
  theStack:
    Concept and code review ACK fa621ededd
  kristapsk:
    ACK fa621ededd
  jonatack:
    ACK fa621ededd

Tree-SHA512: ea0720f32f823fa7f075309978672aa39773c6019d12b6c1c9d611fc1983a76115b7fe2a28d50814673bb6415c311ccc05b99d6e871575fb6900faf75ed17769
2021-07-20 15:36:23 +02:00
Andrew Poelstra
ff432ef70e Merge 7d19c85f4a into merged_master (Bitcoin PR bitcoin/bitcoin#21970) 2021-07-11 15:08:31 +00: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
657390e17d Merge 267b60f800 into merged_master (Bitcoin PR #21553) 2021-06-28 23:42:21 +00:00
Andrew Poelstra
05bd3e6667 Merge 767bb7d5c5 into merged_master (Bitcoin PR #21270) 2021-06-26 19:21:09 +00:00
Andrew Poelstra
60bb7aa7c7 Merge 83bdbbd300 into merged_master (Bitcoin PR #21003) 2021-06-26 01:01:46 +00:00
Andrew Poelstra
705e356896 Merge cac10e66d2 into merged_master (Bitcoin PR #21264) 2021-06-25 14:10:05 +00:00
Andrew Poelstra
d7061d9c10 Merge 85fee49c39 into merged_master (Bitcoin PR #20946) 2021-06-18 13:02:27 +00:00
Andrew Poelstra
0748caa0a7 Merge 29d2aeb4a2 into merged_master (Bitcoin PR #20828)
This diff is probably extremely hard to read because it's a global
indentation change coupled with a ton of branches. But all the
changes (should be) mechanical. No actual changes.
2021-06-17 22:12:53 +00:00
James O'Beirne
615c1adfb0
refactor: wrap CCoinsViewCursor in unique_ptr
Specifically with CCoinsViewDB, if a raw cursor is allocated and
not freed, a cryptic leveldb assertion failure occurs on
CCoinsViewDB destruction.

See: https://github.com/google/leveldb/issues/142#issuecomment-414418135
2021-06-17 09:47:08 -04:00
Andrew Poelstra
5314c886d9 Merge 8bb40d5f56 into merged_master (Bitcoin PR #20560) 2021-06-14 13:42:32 +00:00
MarcoFalke
fa621ededd
refactor: Pass script verify flags as uint32_t
They are cast to unsigned anyway when calling VerifyScript,
bitcoinconsensus_verify_script*, or CountWitnessSigOps.
2021-06-14 08:02:45 +02:00
Carl Dong
ee0ab1e959 fuzz: Initialize a TestingSetup for test_one_input
For fuzz tests that need it.
2021-06-10 15:04:39 -04:00
practicalswift
37371268d1 Mark CheckTxInputs [[nodiscard]] (out-param txfee only set if call is successful). Avoid UUM in fuzzing harness coins_view. 2021-05-25 21:09:05 +00:00
MarcoFalke
fae4ee545a
fuzz: Add missing CheckTransaction before CheckTxInputs 2021-05-17 10:04:57 +02:00
Fabian Jahr
9c8a265fd2
refactor: Pass hash_type to CoinsStats in stats object 2021-04-19 20:28:48 +02:00
MarcoFalke
eeee8f5be1
fuzz: Removed unused try-catch in coins_view 2021-03-30 10:16:22 +02:00
Andrew Poelstra
1670bdfa0b ci: fix benchmarks, fuzztests and unit tests
Includes a memory leak in the checkqueue unit test (but not in
the actual code). WE really need to switch our checkqueue to use
std::unique_pointer rather than bare pointers. But this would be
invasive enough that I want to do it in a followup PR.

Also pretty-much disable the validation_flush_cache unit test.
This is a stupid and irritating test which tries to unit-test
exact memory usage of std containers. It already has at least
one "remove wrong assumptions" update upstream and after many
tries I was unable to change all the magic numbers in a way
that'd consistently pass CI for Elements.

Also adds a couple ubsan suppressions about perfectly-legitimate
conversions of integer types.
2021-03-26 17:33:05 +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
Carl Dong
106bcd4f39 node/coinstats: Pass in BlockManager to GetUTXOStats 2021-03-08 15:54:31 -05:00
MarcoFalke
fa576b4532
Move MakeNoLogFileContext to common libtest_util, and use it in bench
Can be reviewed with --color-moved=dimmed-zebra
2021-03-03 09:17:37 +01:00
MarcoFalke
fae216a73d
scripted-diff: Rename MakeFuzzingContext to MakeNoLogFileContext
-BEGIN VERIFY SCRIPT-
 # Rename
 sed -i -e 's/MakeFuzzingContext/MakeNoLogFileContext/g' $(git grep -l MakeFuzzingContext)
 # Bump the copyright of touched files in this scripted diff to avoid touching them again later
 ./contrib/devtools/copyright_header.py update ./src/test/fuzz/
-END VERIFY SCRIPT-
2021-02-22 10:27:22 +01:00
Carl Dong
abb6fa7285 fuzz: Initialize a full TestingSetup where appropriate
A full TestingSetup is required for both coins_view and
load_external_block_file as they interact with the active chainstate.
2021-01-21 09:29:42 -05:00