diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index b0d96235..7e2b12f9 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -720,10 +720,10 @@ _ (HashmapE 256 ValidatorSignedTempKey) = ConfigParam 39; misbehaviour_punishment_config_v1#01 default_flat_fine:Grams default_proportional_fine:uint32 - severity_flat_mult:uint8 severity_proportional_mult:uint8 + severity_flat_mult:uint16 severity_proportional_mult:uint16 unpunishable_interval:uint16 - long_interval:uint16 long_flat_mult:uint8 long_proportional_mult:uint8 - medium_interval:uint16 medium_flat_mult:uint8 medium_proportional_mult:uint8 + long_interval:uint16 long_flat_mult:uint16 long_proportional_mult:uint16 + medium_interval:uint16 medium_flat_mult:uint16 medium_proportional_mult:uint16 = MisbehaviourPunishmentConfig; _ MisbehaviourPunishmentConfig = ConfigParam 40; diff --git a/lite-client/lite-client.cpp b/lite-client/lite-client.cpp index f50c118c..1ccfec86 100644 --- a/lite-client/lite-client.cpp +++ b/lite-client/lite-client.cpp @@ -3722,18 +3722,18 @@ bool compute_punishment(int interval, bool severe, td::RefInt256& fine, unsigned fine_part = rec.default_proportional_fine; if (severe) { - fine = fine * rec.severity_flat_mult; - fine_part = fine_part * rec.severity_proportional_mult; + fine = fine * rec.severity_flat_mult; fine >>= 8; + fine_part = fine_part * rec.severity_proportional_mult; fine_part >>= 8; } if (interval >= rec.long_interval) { - fine = fine * rec.long_flat_mult; - fine_part = fine_part * rec.long_proportional_mult; + fine = fine * rec.long_flat_mult; fine >>= 8; + fine_part = fine_part * rec.long_proportional_mult; fine_part >>= 8; return true; } if (interval >= rec.medium_interval) { - fine = fine * rec.medium_flat_mult; - fine_part = fine_part * rec.medium_proportional_mult; + fine = fine * rec.medium_flat_mult; fine >>= 8; + fine_part = fine_part * rec.medium_proportional_mult; fine_part >>= 8; return true; } return true;