Still destake delinquents on poor block production (#10646)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
Michael Vines 2020-06-17 04:29:28 -07:00 committed by GitHub
parent 50c93d4441
commit 336339ac33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 17 deletions

View File

@ -565,15 +565,8 @@ fn main() -> Result<(), Box<dyn error::Error>> {
let (quality_block_producers, poor_block_producers) =
classify_block_producers(&rpc_client, &config, last_epoch)?;
if poor_block_producers.len()
> quality_block_producers.len() * config.max_poor_block_productor_percentage / 100
{
error!(
"Something is wrong. More than {}% of validators classified as poor block producers",
config.max_poor_block_productor_percentage
);
process::exit(1);
}
let too_many_poor_block_producers = poor_block_producers.len()
> quality_block_producers.len() * config.max_poor_block_productor_percentage / 100;
// Fetch vote account status for all the validator_listed validators
let vote_account_status = rpc_client.get_vote_accounts()?;
@ -729,10 +722,11 @@ fn main() -> Result<(), Box<dyn error::Error>> {
));
}
if quality_block_producers.contains(&node_pubkey) {
// Delegate bonus stake
if !stake_activated_in_current_epoch.contains(&bonus_stake_address) {
delegate_stake_transactions.push((
if !too_many_poor_block_producers {
if quality_block_producers.contains(&node_pubkey) {
// Delegate bonus stake
if !stake_activated_in_current_epoch.contains(&bonus_stake_address) {
delegate_stake_transactions.push((
Transaction::new_unsigned(
Message::new_with_payer(
&[stake_instruction::delegate_stake(
@ -749,10 +743,10 @@ fn main() -> Result<(), Box<dyn error::Error>> {
lamports_to_sol(config.bonus_stake_amount),
),
));
}
} else {
// Deactivate bonus stake
delegate_stake_transactions.push((
}
} else {
// Deactivate bonus stake
delegate_stake_transactions.push((
Transaction::new_unsigned(
Message::new_with_payer(
&[stake_instruction::deactivate_stake(
@ -768,6 +762,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
lamports_to_sol(config.bonus_stake_amount),
),
));
}
}
} else {
// Destake the validator if it has been delinquent for longer than the grace period
@ -869,6 +864,18 @@ fn main() -> Result<(), Box<dyn error::Error>> {
&config.authorized_staker,
)?;
if too_many_poor_block_producers {
let message = format!(
"Note: Something is wrong, more than {}% of validators classified \
as poor block producers in epoch {}. Bonus stake frozen",
config.max_poor_block_productor_percentage, last_epoch,
);
warn!("{}", message);
if !config.dry_run {
notifier.send(&message);
}
}
if !process_confirmations(
confirmations,
if config.dry_run {