Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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