Решено
Если коротко, то да. ** Смарт-контракты записываются в FunC, затем компилируются в Fift и развертываются на блокчейне.** Позже с ними можно взаимодействовать с помощью либо Fift, либо SDK-оболочки.
С другой стороны, при вызове recv_internal в стеке всегда есть 4 аргумента.
Объявляя recv_internal с менее чем 4 аргументами, вы заставляете FunC игнорировать большинство глубоких переменных (они все равно будут там, но ваш код не будет знать об этом на протяжении всего выполнения TVM).
вот пример для recv_internal в последнем [учебном пособии](https://ton - community.github.io/tutorials/02-contract /) построен сообществом:
() recv_internal(int msg_value, cell in_msg, slice in_msg_body) impure { ;; well known function signature
if (in_msg_body.slice_empty?()) { ;; check if incoming message is empty (with no body)
return (); ;; return successfully and accept an empty message
}
int op = in_msg_body~load_uint(32); ;; parse the operation type encoded in the beginning of msg body
var (counter) = load_data(); ;; call our read utility function to load values from storage
if (op == 1) { ;; handle op #1 = increment
save_data(counter + 1); ;; call our write utility function to persist values to storage
}
}
Вы можете узнать больше здесь: https://ton.org/docs/learn/tvm-instructions/tvm-обзор#инициализацияtvm
Для более глубокого понимания вы можете проверить Ch4.4 в техническом документе https://ton.org/tblkch.pdf