Skip to content

Commit 2ff3588

Browse files
committed
add stake info alerting
1 parent 5177df7 commit 2ff3588

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

modules/alert_bot.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Alert:
1818
HOUR = 3600
1919
VALIDATION_PERIOD = 65536
2020
FREEZE_PERIOD = 32768
21+
ELECTIONS_START_BEFORE = 8192
2122

2223

2324
ALERTS = {
@@ -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

Comments
 (0)