@@ -18,6 +18,7 @@ class Alert:
1818HOUR = 3600
1919VALIDATION_PERIOD = 65536
2020FREEZE_PERIOD = 32768
21+ ELECTIONS_START_BEFORE = 8192
2122
2223
2324ALERTS = {
@@ -70,6 +71,16 @@ class Alert:
7071 "Validator has been slashed in previous round for {amount} TON" ,
7172 FREEZE_PERIOD
7273 ),
74+ "stake_not_accepted" : Alert (
75+ "high" ,
76+ "Validator's stake has not been accepted" ,
77+ ELECTIONS_START_BEFORE
78+ ),
79+ "stake_accepted" : Alert (
80+ "info" ,
81+ "Validator's stake {stake} TON has been accepted" ,
82+ ELECTIONS_START_BEFORE
83+ )
7384}
7485
7586
@@ -128,9 +139,10 @@ def send_alert(self, alert_name: str, *args, **kwargs):
128139 def set_global_vars (self ):
129140 # set global vars for correct alerts timeouts for current network
130141 config15 = self .ton .GetConfig15 ()
131- global VALIDATION_PERIOD , FREEZE_PERIOD
142+ global VALIDATION_PERIOD , FREEZE_PERIOD , ELECTIONS_START_BEFORE
132143 VALIDATION_PERIOD = config15 ["validatorsElectedFor" ]
133144 FREEZE_PERIOD = config15 ["stakeHeldFor" ]
145+ ELECTIONS_START_BEFORE = config15 ["electionsStartBefore" ]
134146
135147 def init (self ):
136148 if not self .ton .get_mode_value ('alert-bot' ):
@@ -271,6 +283,32 @@ def check_adnl_connection_failed(self):
271283 if not ok :
272284 self .send_alert ("adnl_connection_failed" )
273285
286+ def get_myself_from_election (self ):
287+ config = self .ton .GetConfig36 ()
288+ if not config ["validators" ]:
289+ return
290+ validator = self .validator_module .find_myself (config ["validators" ])
291+ if validator is None :
292+ return False
293+ save_elections = self .ton .GetSaveElections ()
294+ elections = save_elections .get (str (config ["startWorkTime" ]))
295+ if elections is None :
296+ return validator
297+ adnl = self .ton .GetAdnlAddr ()
298+ validator ['stake' ] = elections [adnl ].get ('stake' )
299+ return validator
300+
301+ def check_stake (self ):
302+ if not self .ton .using_validator ():
303+ return
304+ res = self .get_myself_from_election ()
305+ if res is None :
306+ return
307+ if res is False :
308+ self .send_alert ("stake_not_accepted" )
309+ return
310+ self .send_alert ("stake_accepted" , stake = res .get ('stake' ))
311+
274312 def check_status (self ):
275313 if not self .ton .using_alert_bot ():
276314 return
@@ -285,6 +323,7 @@ def check_status(self):
285323 self .local .try_function (self .check_sync )
286324 self .local .try_function (self .check_slashed )
287325 self .local .try_function (self .check_adnl_connection_failed )
326+ self .local .try_function (self .check_stake )
288327
289328 def add_console_commands (self , console ):
290329 console .AddItem ("enable_alert" , self .enable_alert , self .local .translate ("enable_alert_cmd" ))
0 commit comments