Ton

Форк
0
99 строк · 3.2 Кб
1
global int ctx_query_id;
2

3
global int ctx_locked;
4
global slice ctx_owner;
5
global slice ctx_controller;
6
global slice ctx_proxy;
7
global cell ctx_proxy_state;
8

9
global int ctx_profit_per_coin;
10
global int ctx_balance;
11
global int ctx_balance_sent;
12
global int ctx_balance_withdraw;
13
global int ctx_balance_pending_withdraw;
14
global int ctx_balance_pending_deposits;
15

16
global cell ctx_nominators;
17

18
;; var (enabled, udpates_enabled, min_stake, deposit_fee, withdraw_fee, pool_fee, receipt_price) = ctx_extras;
19
global (int, int, int, int, int, int, int) ctx_extras;
20

21
() load_base_data() impure {
22
    var ds = get_data().begin_parse();
23
    ctx_locked = ds~load_int(1);
24

25
    ctx_owner = ds~load_msg_addr();
26
    ctx_controller = ds~load_msg_addr();
27
    ctx_proxy = ds~load_msg_addr();
28

29
    cell balance_cell = ds~load_ref();
30
    ctx_nominators = ds~load_dict();
31
    ctx_proxy_state = ds~load_ref();
32
    cell extras_cell = null();
33
    if (ds.slice_refs() > 0) {
34
        extras_cell = ds~load_ref();
35
    }
36
    ds.end_parse();
37

38
    var bs = balance_cell.begin_parse();
39
    ctx_profit_per_coin = bs~load_int(128);
40
    ctx_balance = bs~load_coins();
41
    ctx_balance_sent = bs~load_coins();
42
    ctx_balance_withdraw = bs~load_coins();
43
    ctx_balance_pending_withdraw = bs~load_coins();
44
    ctx_balance_pending_deposits = bs~load_coins();
45
    bs.end_parse();
46

47
    ;; Parsing extras (enabled, upgrades_enabled, min_stake, deposit_fee, withdraw_fee, pool_fee, receipt_price)
48
    ctx_extras = (
49
        true,  ;; Enabled
50
        true,  ;; Upgrades enabled
51
        params::min_stake(), ;; Min Stake
52
        fees::op(), ;; Deposit fee
53
        fees::op(), ;; Withdraw fee
54
        10 * 100, ;; Pool fee (%),
55
        fees::receipt()
56
    );
57
    if (~ extras_cell.null?()) {
58
        var ec = extras_cell.begin_parse();
59
        var enabled = ec~load_int(1);
60
        var udpates_enabled = ec~load_int(1);
61
        var min_stake = ec~load_coins();
62
        var deposit_fee = ec~load_coins();
63
        var withdraw_fee = ec~load_coins();
64
        var pool_fee = ec~load_coins();
65
        var receipt_price = ec~load_coins();
66
        ctx_extras = (enabled, udpates_enabled, min_stake, deposit_fee, withdraw_fee, pool_fee, receipt_price);
67
        ec.end_parse();
68
    }
69
}
70

71
() store_base_data() impure {
72
    var (enabled, udpates_enabled, min_stake, deposit_fee, withdraw_fee, pool_fee, receipt_price) = ctx_extras;
73
    set_data(begin_cell()
74
        .store_int(ctx_locked, 1)
75
        .store_slice(ctx_owner)
76
        .store_slice(ctx_controller)
77
        .store_slice(ctx_proxy)
78
        .store_ref(begin_cell()
79
            .store_int(ctx_profit_per_coin, 128)
80
            .store_coins(ctx_balance)
81
            .store_coins(ctx_balance_sent)
82
            .store_coins(ctx_balance_withdraw)
83
            .store_coins(ctx_balance_pending_withdraw)
84
            .store_coins(ctx_balance_pending_deposits)
85
        .end_cell())
86
        .store_dict(ctx_nominators)
87
        .store_ref(ctx_proxy_state)
88
        .store_ref(begin_cell()
89
            .store_int(enabled, 1)
90
            .store_int(udpates_enabled, 1)
91
            .store_coins(min_stake)
92
            .store_coins(deposit_fee)
93
            .store_coins(withdraw_fee)
94
            .store_coins(pool_fee)
95
            .store_coins(receipt_price)
96
        .end_cell())
97
    .end_cell());
98
    commit();
99
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.