aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMurch <murch@murch.one>2023-06-12 11:09:21 -0400
committerMurch <murch@murch.one>2023-09-13 14:33:54 -0400
commitc24851be945b2a633ee44ed3c8a501eee5580b62 (patch)
treefcaf72061b34cc5b8dc9fca3320ec3bf388886d0
parentac6030e4d8f7d578cd4a8593f41189efca548064 (diff)
Make MiniMinerMempoolEntry fields private
Follow-up from #27021: accessing of fields in MiniMinerMempoolEntry was done inconsistently. Even though we had a getter, we would directly write to the fields when we needed to update them. This commits sets the fields to private and introduces a method for updating the ancestor information in transactions using the same method name as used for Mempool Entries.
-rw-r--r--src/node/mini_miner.cpp5
-rw-r--r--src/node/mini_miner.h9
2 files changed, 9 insertions, 5 deletions
diff --git a/src/node/mini_miner.cpp b/src/node/mini_miner.cpp
index 159c3b40ab..2827242f96 100644
--- a/src/node/mini_miner.cpp
+++ b/src/node/mini_miner.cpp
@@ -169,9 +169,8 @@ void MiniMiner::DeleteAncestorPackage(const std::set<MockEntryMap::iterator, Ite
for (auto& descendant : it->second) {
// If these fail, we must be double-deducting.
Assume(descendant->second.GetModFeesWithAncestors() >= anc->second.GetModifiedFee());
- Assume(descendant->second.vsize_with_ancestors >= anc->second.GetTxSize());
- descendant->second.fee_with_ancestors -= anc->second.GetModifiedFee();
- descendant->second.vsize_with_ancestors -= anc->second.GetTxSize();
+ Assume(descendant->second.GetSizeWithAncestors() >= anc->second.GetTxSize());
+ descendant->second.UpdateAncestorState(-anc->second.GetTxSize(), -anc->second.GetModifiedFee());
}
}
// Delete these entries.
diff --git a/src/node/mini_miner.h b/src/node/mini_miner.h
index db07e6d1bf..9d9d66bf0b 100644
--- a/src/node/mini_miner.h
+++ b/src/node/mini_miner.h
@@ -19,12 +19,13 @@ class MiniMinerMempoolEntry
const CAmount fee_individual;
const CTransactionRef tx;
const int64_t vsize_individual;
+ CAmount fee_with_ancestors;
+ int64_t vsize_with_ancestors;
// This class must be constructed while holding mempool.cs. After construction, the object's
// methods can be called without holding that lock.
+
public:
- CAmount fee_with_ancestors;
- int64_t vsize_with_ancestors;
explicit MiniMinerMempoolEntry(CTxMemPool::txiter entry) :
fee_individual{entry->GetModifiedFee()},
tx{entry->GetSharedTx()},
@@ -38,6 +39,10 @@ public:
int64_t GetTxSize() const { return vsize_individual; }
int64_t GetSizeWithAncestors() const { return vsize_with_ancestors; }
const CTransaction& GetTx() const LIFETIMEBOUND { return *tx; }
+ void UpdateAncestorState(int64_t vsize_change, CAmount fee_change) {
+ vsize_with_ancestors += vsize_change;
+ fee_with_ancestors += fee_change;
+ }
};
// Comparator needed for std::set<MockEntryMap::iterator>