Ton

Форк
0
60 строк · 1.3 Кб
1
() op_owner(int flags, int value, slice in_msg) impure {
2
    
3
    ;; Ignore bounced
4
    if (flags & 1) {
5
        return ();
6
    }
7

8
    ;; Check value
9
    throw_unless(error::invalid_message(), value >= params::min_op());
10

11
    ;; Parse operation
12
    int op = in_msg~load_uint(32);
13
    int query_id = in_msg~load_uint(64);
14
    int gas_limit = in_msg~load_coins();
15
    set_gas_limit(gas_limit);
16
    ctx_query_id = query_id;
17
    throw_unless(error::invalid_message(), ctx_query_id > 0);
18

19
    ;; Upgrade
20
    if (op == op::upgrade()) {
21
        op_upgrade(value, in_msg);
22
        return ();
23
    }
24

25
    ;; Upgrade
26
    if (op == op::update()) {
27
        op_update(value, in_msg);
28
        return ();
29
    }
30

31
    ;; Add stake
32
    if (op == op::stake_deposit()) {
33
        op_deposit(owner_id(), value);
34
        return ();
35
    }
36

37
    ;; Withdraw stake
38
    if (op == op::stake_withdraw()) {
39
        int stake = in_msg~load_coins();
40
        in_msg.end_parse();
41
        op_withdraw(owner_id(), value, stake);
42
        return ();
43
    }
44

45
    ;; Recover stake
46
    if (op == op::stake_recover()) {
47
        load_validator_data();
48
        op_stake_recover(value);
49
        return ();
50
    }
51

52
    ;; Donate stake
53
    if (op == op::donate()) {
54
        op_donate(value);
55
        return ();
56
    }
57

58
    ;; Unknown message
59
    throw(error::invalid_message());
60
}

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

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

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

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