mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-31 10:41:08 +00:00
Merge bitcoin/bitcoin#33985: fuzz: gate mempool entry based on weight
804329400a73df00dfd7a5209c659d4a22b9ce47 fuzz: gate mempool entry based on weight (Greg Sanders) Pull request description: The mempool implementation now uses TxGraph with entries using FeePerWeight, not vsize. This means our package_rbf harness will erroneously add more transaction weight than we can support inside of FeeFrac. Gate more aggressively using WITNESS_SCALE_FACTOR. Fixes https://github.com/bitcoin/bitcoin/issues/33981 ACKs for top commit: sdaftuar: ACK 804329400a73df00dfd7a5209c659d4a22b9ce47 ismaelsadeeq: utACK 804329400a73df00dfd7a5209c659d4a22b9ce47 dergoegge: utACK 804329400a73df00dfd7a5209c659d4a22b9ce47 Tree-SHA512: e78d0f73f9b9cbb8c0db1e8e91dbffeb4110cf8113e90f34af5c132acf0819c54254891a4dd5da63016e4edf9d8e886f469f959bd3504b7deb66989d96fe4cf1
This commit is contained in:
commit
4c784b25c4
@ -121,6 +121,7 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
|
||||
CTransaction replacement_tx_final{*replacement_tx};
|
||||
auto replacement_entry = ConsumeTxMemPoolEntry(fuzzed_data_provider, replacement_tx_final);
|
||||
int32_t replacement_weight = replacement_entry.GetAdjustedWeight();
|
||||
// Ensure that we don't hit FeeFrac limits, as we store TxGraph entries in terms of FeePerWeight
|
||||
int64_t running_vsize_total{replacement_entry.GetTxSize()};
|
||||
|
||||
LOCK2(cs_main, pool.cs);
|
||||
@ -137,7 +138,7 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
|
||||
mempool_txs.emplace_back(parent);
|
||||
const auto parent_entry = ConsumeTxMemPoolEntry(fuzzed_data_provider, mempool_txs.back());
|
||||
running_vsize_total += parent_entry.GetTxSize();
|
||||
if (running_vsize_total > std::numeric_limits<int32_t>::max()) {
|
||||
if (running_vsize_total * WITNESS_SCALE_FACTOR > std::numeric_limits<int32_t>::max()) {
|
||||
// We aren't adding this final tx to mempool, so we don't want to conflict with it
|
||||
mempool_txs.pop_back();
|
||||
break;
|
||||
@ -156,7 +157,7 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
|
||||
mempool_txs.emplace_back(child);
|
||||
const auto child_entry = ConsumeTxMemPoolEntry(fuzzed_data_provider, mempool_txs.back());
|
||||
running_vsize_total += child_entry.GetTxSize();
|
||||
if (running_vsize_total > std::numeric_limits<int32_t>::max()) {
|
||||
if (running_vsize_total * WITNESS_SCALE_FACTOR > std::numeric_limits<int32_t>::max()) {
|
||||
// We aren't adding this final tx to mempool, so we don't want to conflict with it
|
||||
mempool_txs.pop_back();
|
||||
break;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user