Split out current and delinquent validators (#10702)

This commit is contained in:
Michael Vines 2020-06-18 16:19:32 -07:00 committed by GitHub
parent 0a0f17b9d2
commit 2c029b844b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 20 deletions

View File

@ -254,6 +254,15 @@ fn slot_to_human_time(slot: Slot) -> String {
.to_string()
}
#[derive(Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CliValidatorsStakeByVersion {
pub current_validators: usize,
pub delinquent_validators: usize,
pub current_active_stake: u64,
pub delinquent_active_stake: u64,
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CliValidators {
@ -262,13 +271,7 @@ pub struct CliValidators {
pub total_deliquent_stake: u64,
pub current_validators: Vec<CliValidator>,
pub delinquent_validators: Vec<CliValidator>,
pub stake_by_version: BTreeMap<
String, /*version*/
(
usize, /*num validators*/
u64, /*total_active_stake*/
),
>,
pub stake_by_version: BTreeMap<String, CliValidatorsStakeByVersion>,
#[serde(skip_serializing)]
pub use_lamports_unit: bool,
}
@ -347,14 +350,23 @@ impl fmt::Display for CliValidators {
}
writeln!(f)?;
writeln!(f, "{}", style("Active Stake By Version:").bold())?;
for (version, (num_validators, total_active_stake)) in self.stake_by_version.iter() {
writeln!(f, "{}", style("Stake By Version:").bold())?;
for (version, info) in self.stake_by_version.iter() {
writeln!(
f,
"{} x {} = {:0.2}%",
"{:<16} - {:3} current validators ({:>5.2}%){}",
version,
num_validators,
100. * *total_active_stake as f64 / self.total_active_stake as f64
info.current_validators,
100. * info.current_active_stake as f64 / self.total_active_stake as f64,
if info.delinquent_validators > 0 {
format!(
", {:3} delinquent validators ({:>5.2}%)",
info.delinquent_validators,
100. * info.delinquent_active_stake as f64 / self.total_active_stake as f64
)
} else {
"".to_string()
},
)?;
}
@ -363,7 +375,7 @@ impl fmt::Display for CliValidators {
f,
"{}",
style(format!(
" {:<44} {:<38} {} {} {} {:>10} {:>17} {}",
" {:<44} {:<38} {} {} {} {:>10} {:^17} {}",
"Identity Pubkey",
"Vote Account Pubkey",
"Commission",

View File

@ -1257,16 +1257,20 @@ pub fn process_show_validators(
})
.collect();
let mut stake_by_version: BTreeMap<_, (usize, u64)> = BTreeMap::new();
for validator in current_validators
.iter()
.chain(delinquent_validators.iter())
{
let mut stake_by_version: BTreeMap<_, CliValidatorsStakeByVersion> = BTreeMap::new();
for validator in current_validators.iter() {
let mut entry = stake_by_version
.entry(validator.version.clone())
.or_default();
entry.0 += 1;
entry.1 += validator.activated_stake;
entry.current_validators += 1;
entry.current_active_stake += validator.activated_stake;
}
for validator in delinquent_validators.iter() {
let mut entry = stake_by_version
.entry(validator.version.clone())
.or_default();
entry.delinquent_validators += 1;
entry.delinquent_active_stake += validator.activated_stake;
}
let cli_validators = CliValidators {