def _check_for_slashing(self, height_to_check: int, archive_node: Node) \ -> None: block_hash = self.data_wrapper.get_block_hash(archive_node.ws_url, height_to_check) slash_amount = self.data_wrapper.get_slash_amount( archive_node.ws_url, block_hash, self.node.stash_account_address) if slash_amount > 0: scaled_slash_amount = round(scale_to_pico(slash_amount), 3) self.node.slash(scaled_slash_amount, self.channels, self.logger)
def set_bonded_balance(self, new_bonded_balance: int, channels: ChannelSet, logger: logging.Logger) -> None: logger.debug('%s set_bonded_balance: before=%s, new=%s, channels=%s', self, self.bonded_balance, new_bonded_balance, channels) # Alert if bonded_balance has changed if self.bonded_balance not in [None, new_bonded_balance]: # Extracted data is in tera, therefore, to give more meaningful # alerts, the bonded balance will be scaled down. threshold = scale_to_tera(self._change_in_bonded_balance_threshold) scaled_new_bal = round(scale_to_pico(new_bonded_balance), 3) scaled_bal = round(scale_to_pico(self.bonded_balance), 3) if self.is_validator and new_bonded_balance == 0: # N to 0 channels.alert_critical( BondedBalanceDecreasedAlert(self.name, scaled_bal, scaled_new_bal)) elif self.is_validator and self.bonded_balance == 0: # 0 to N channels.alert_info( BondedBalanceIncreasedAlert(self.name, scaled_bal, scaled_new_bal)) else: # Any change diff = new_bonded_balance - self.bonded_balance if abs(diff) > threshold: if diff > 0: channels.alert_info( BondedBalanceIncreasedByAlert( self.name, scaled_bal, scaled_new_bal)) else: channels.alert_info( BondedBalanceDecreasedByAlert( self.name, scaled_bal, scaled_new_bal)) # Update bonded balance self._bonded_balance = new_bonded_balance