Skip to content

Commit

Permalink
solana validators output now includes average skip rate
Browse files Browse the repository at this point in the history
(cherry picked from commit 52290db)
  • Loading branch information
mvines committed Jul 1, 2021
1 parent 884ef21 commit f4e4373
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
14 changes: 14 additions & 0 deletions cli-output/src/cli_output.rs
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,8 @@ pub struct CliValidators {
pub total_current_stake: u64,
pub total_delinquent_stake: u64,
pub validators: Vec<CliValidator>,
pub average_skip_rate: f64,
pub average_stake_weighted_skip_rate: f64,
#[serde(skip_serializing)]
pub validators_sort_order: CliValidatorsSortOrder,
#[serde(skip_serializing)]
Expand Down Expand Up @@ -510,6 +512,18 @@ impl fmt::Display for CliValidators {
writeln!(f, "{}", header)?;
}

writeln!(f)?;
writeln_name_value(
f,
"Average Stake-Weighted Skip Rate:",
&format!("{:.2}%", self.average_stake_weighted_skip_rate,),
)?;
writeln_name_value(
f,
"Average Unweighted Skip Rate: ",
&format!("{:.2}%", self.average_skip_rate),
)?;

writeln!(f)?;
writeln_name_value(
f,
Expand Down
34 changes: 30 additions & 4 deletions cli/src/cluster_query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1895,14 +1895,40 @@ pub fn process_show_validators(
entry.delinquent_active_stake += validator.activated_stake;
}

let validators: Vec<_> = current_validators
.into_iter()
.chain(delinquent_validators.into_iter())
.collect();

let (average_skip_rate, average_stake_weighted_skip_rate) = {
let mut skip_rate_len = 0;
let mut skip_rate_sum = 0.;
let mut skip_rate_weighted_sum = 0.;
for validator in validators.iter() {
if let Some(skip_rate) = validator.skip_rate {
skip_rate_sum += skip_rate;
skip_rate_len += 1;
skip_rate_weighted_sum += skip_rate * validator.activated_stake as f64;
}
}

if skip_rate_len > 0 && total_active_stake > 0 {
(
skip_rate_sum / skip_rate_len as f64,
skip_rate_weighted_sum / total_active_stake as f64,
)
} else {
(100., 100.) // Impossible?
}
};

let cli_validators = CliValidators {
total_active_stake,
total_current_stake,
total_delinquent_stake,
validators: current_validators
.into_iter()
.chain(delinquent_validators.into_iter())
.collect(),
validators,
average_skip_rate,
average_stake_weighted_skip_rate,
validators_sort_order,
validators_reverse_sort,
number_validators,
Expand Down

0 comments on commit f4e4373

Please sign in to comment.