1
0
Fork 0
mirror of https://github.com/romanz/electrs.git synced 2025-02-24 23:08:39 +01:00

Refactor electrum fees calculation into a helper function

This commit is contained in:
Roman Zeyde 2018-06-14 15:58:06 +03:00
parent f9ad0938fc
commit 5a580e1a27
No known key found for this signature in database
GPG key ID: 87CAE5FA46917CBB

View file

@ -218,22 +218,27 @@ impl Tracker {
fn update_fee_histogram(&mut self) {
let mut entries: Vec<&MempoolEntry> = self.items.values().map(|stat| &stat.entry).collect();
entries.sort_unstable_by(|e1, e2| {
// sort by descending fee rate
e2.fee_per_vbyte().partial_cmp(&e1.fee_per_vbyte()).unwrap()
});
let mut histogram = vec![];
let mut bin_size = 0;
let mut last_fee_rate = None;
for e in entries {
last_fee_rate = Some(e.fee_per_vbyte());
bin_size += e.vsize();
if bin_size > VSIZE_BIN_WIDTH {
histogram.push((e.fee_per_vbyte(), bin_size));
bin_size = 0;
}
}
if let Some(fee_rate) = last_fee_rate {
histogram.push((fee_rate, bin_size));
}
self.histogram = histogram;
self.histogram = electrum_fees(&entries);
}
}
fn electrum_fees(entries: &[&MempoolEntry]) -> Vec<(f32, u32)> {
let mut histogram = vec![];
let mut bin_size = 0;
let mut last_fee_rate = None;
for e in entries {
last_fee_rate = Some(e.fee_per_vbyte());
bin_size += e.vsize();
if bin_size > VSIZE_BIN_WIDTH {
histogram.push((e.fee_per_vbyte(), bin_size));
bin_size = 0;
}
}
if let Some(fee_rate) = last_fee_rate {
histogram.push((fee_rate, bin_size));
}
histogram
}