• Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
Theme Center
  • Theme Center
  • default

  • reset theme
Collapse

tonpie.io

Подпишись на канал фаундера и разработчика экосистемы tonpie

[Решено] Что такое функция recv_internal и для чего нужны ее аргументы?

Запланировано Прикреплена Закрыта Перенесена TON Overflow на русском
a-funca-tvm
3 Сообщения 1 Posters 66 Просмотры
    • Сначала старые
    • Сначала новые
    • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано Answers
    #1

    Требуется ли для функции recv_internal наличие определенных аргументов или это полностью зависит от того, что вы хотите, чтобы отправитель сообщения отправил вам?

    Я заметил, что некоторые функциональные программы имеют signature, int msg_value, cell in_msg_cell, slice in_msg, в то время как другие имеют только slice in_msg.


    Этот вопрос был импортирован из чата Telegram: > <***Скрыто***

    click to show


    Оригинал вопроса

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #2

    Решено

    При вызове recv_internal в стеке всегда есть 4 аргумента.

    Объявляя recv_internal с менее чем 4 аргументами, вы заставляете FunC игнорировать большинство глубоких переменных (они все равно будут там, но ваш код не будет знать об этом на протяжении всего выполнения TVM).


    in_msg_full \ - ячейка с необработанной ячейкой сообщения, содержащей все флаги и дополнительные поля

    in_msg_body \ - фрагмент, содержащий только текст сообщения

    Пожалуйста, проверьте https://ton.org/docs/learn/tvm-instructions/tvm-обзор#инициализация-tvm для получения дополнительной информации.

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано Answers
    #3

    каждое из следующих объявлений recv_internal является правильным, но те, у которых меньше переменных, будут расходовать немного меньше газа (каждый неиспользуемый аргумент добавляет дополнительные инструкции по удалению).

    () recv_internal(int balance, int msg_value, cell in_msg_cell, slice in_msg) {}
    () recv_internal(int msg_value, cell in_msg_cell, slice in_msg) {}
    () recv_internal(cell in_msg_cell, slice in_msg) {}
    () recv_internal(slice in_msg) {}
    

    Вы должны проанализировать in_msg_body, чтобы получить код операции, основанный на том, как отправитель сохранил код операции в сообщении.

    Обычно он хранится как первый 32-битный внутри in_msg_body.

    1 ответ Последний ответ
    0

  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.