Ton
44 строки · 1.2 Кб
1(int, int) get_stake_parameters() {
2var cs = config_param(15).begin_parse();
3int electedFor = cs~load_uint(32);
4cs~skip_bits(64);
5int stakeHeldFor = cs~load_uint(32);
6return (electedFor, stakeHeldFor);
7}
8
9(int, int) get_previous_cycle() {
10var cs = config_param(32).begin_parse();
11cs~skip_bits(8); ;; Header
12int timeSince = cs~load_uint(32);
13int timeUntil = cs~load_uint(32);
14return (timeSince, timeUntil);
15}
16
17(int, int) get_current_cycle() {
18var cs = config_param(34).begin_parse();
19cs~skip_bits(8); ;; Header
20int timeSince = cs~load_uint(32);
21int timeUntil = cs~load_uint(32);
22return (timeSince, timeUntil);
23}
24
25int lockup_lift_time(int stake_at, int stake_untill) {
26
27;; Resolve previous cycle parameters
28var (timeSince, timeUntil) = get_previous_cycle();
29
30;; If previous cycle looks as a valid one
31if (stake_at <= timeSince) {
32return timeSince + (stake_untill - stake_at);
33}
34
35;; Check current cycle
36var (timeSince, timeUntil) = get_current_cycle();
37
38;; If current cycle could be the one we joined validation
39if (stake_at <= timeSince) {
40return timeSince + (stake_untill - stake_at);
41}
42
43return stake_untill;
44}