Ton
52 строки · 1.5 Кб
1#include "stdlib.fc";
2#include "modules/constants.fc";
3#include "modules/utils-config.fc";
4#include "modules/utils.fc";
5;; #include "modules/utils-config-mock.fc";
6#include "modules/store-base.fc";
7#include "modules/store-nominators.fc";
8#include "modules/store-validator.fc";
9#include "modules/model.fc";
10#include "modules/op-controller.fc";
11#include "modules/op-owner.fc";
12#include "modules/op-common.fc";
13#include "modules/op-nominators.fc";
14#include "modules/get.fc";
15
16() recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure {
17
18;; Prepare message context
19var cs = in_msg_cell.begin_parse();
20var flags = cs~load_uint(4); ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
21slice s_addr = cs~load_msg_addr();
22load_base_data();
23
24;; Handle controller messages
25if (equal_slices(s_addr, ctx_controller)) {
26load_validator_data();
27op_controller(flags, msg_value, in_msg);
28return ();
29}
30
31;; Handle elector messages
32if (equal_slices(s_addr, ctx_proxy)) {
33load_validator_data();
34op_elector(flags, msg_value, in_msg);
35return ();
36}
37
38;; Handle owner messages
39if (equal_slices(s_addr, ctx_owner)) {
40op_owner(flags, msg_value, in_msg);
41return ();
42}
43
44;; Nominators
45var address = parse_work_addr(s_addr);
46op_nominators(address, flags, msg_value, in_msg);
47}
48
49() recv_external(slice in_msg) impure {
50;; Do not accept external messages
51throw(error::invalid_message());
52}
53