Skip to content

Commit 5f6625a

Browse files
committed
fix: replace tuple with helper struct in stake address delta aggregation
Signed-off-by: William Hankins <[email protected]>
1 parent 78aaf96 commit 5f6625a

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

modules/stake_delta_filter/src/utils.rs

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,13 @@ impl Tracker {
311311
}
312312
}
313313

314+
/// Internal helper used during `process_message` aggregation for deduplication.
315+
struct StakeEntry {
316+
delta: i64,
317+
addresses: Vec<ShelleyAddress>,
318+
seen: HashSet<ShelleyAddress>,
319+
}
320+
314321
/// Iterates through all address deltas in `delta`, leaves only stake addresses
315322
/// (and removes all others). If the address is a pointer, tries to resolve it.
316323
/// If the pointer is incorrect, then filters it out too (incorrect pointers cannot
@@ -321,8 +328,9 @@ pub fn process_message(
321328
block: &BlockInfo,
322329
mut tracker: Option<&mut Tracker>,
323330
) -> StakeAddressDeltasMessage {
324-
let mut grouped: HashMap<StakeAddress, (i64, Vec<ShelleyAddress>, HashSet<ShelleyAddress>)> =
331+
let mut grouped: HashMap<StakeAddress, StakeEntry> =
325332
HashMap::new();
333+
326334
for d in delta.deltas.iter() {
327335
// Variants to be processed:
328336
// 1. Shelley Address delegation is a stake
@@ -389,25 +397,27 @@ pub fn process_message(
389397
Address::Stake(stake_address) => (stake_address.clone(), None),
390398
};
391399

392-
let entry = grouped.entry(stake_address).or_insert((0, Vec::new(), HashSet::new()));
393-
entry.0 += d.value.lovelace;
400+
let entry = grouped.entry(stake_address).or_insert_with(|| StakeEntry {
401+
delta: 0,
402+
addresses: Vec::new(),
403+
seen: HashSet::new(),
404+
});
405+
entry.delta += d.value.lovelace;
394406

395407
if let Some(shelley) = shelley_opt {
396-
if entry.2.insert(shelley.clone()) {
397-
entry.1.push(shelley.clone());
408+
if entry.seen.insert(shelley.clone()) {
409+
entry.addresses.push(shelley.clone());
398410
}
399411
}
400412
}
401413

402414
let deltas = grouped
403415
.into_iter()
404-
.map(
405-
|(stake_address, (delta, shelley_addrs, _))| StakeAddressDelta {
406-
stake_address,
407-
addresses: shelley_addrs,
408-
delta,
409-
},
410-
)
416+
.map(|(stake_address, entry)| StakeAddressDelta {
417+
stake_address,
418+
addresses: entry.addresses,
419+
delta: entry.delta,
420+
})
411421
.collect();
412422

413423
StakeAddressDeltasMessage { deltas }

processes/omnibus/omnibus.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ store-registration-history = false
7171
store-delegation-history = false
7272
store-mir-history = false
7373
store-withdrawal-history = false
74-
store-addresses = true
74+
store-addresses = false
7575

7676
[module.drep-state]
7777
# Enables /governance/dreps/{drep_id} endpoint (Requires store-delegators to be enabled)

0 commit comments

Comments
 (0)