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

  • reset theme
Collapse

tonpie.io

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

[Решено] Что означает `int_msg_info` в этой функции?

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

    Всем привет, пожалуйста, объясните:

    () send_message_back(addr, ans_tag, query_id, body, grams, mode) impure inline_ref {
    ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
    var msg = begin_cell()
    .store_uint(0x18, 6)
    .store_slice(addr)
    .store_coins(grams)
    .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1)
    .store_uint(ans_tag, 32)
    .store_uint(query_id, 64);
    if (body >= 0) {
    msg~store_uint(body, 32);
    }
    send_raw_message(msg.end_cell(), mode);
    }
    

    Откуда берутся цифры в этой строке: .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1)


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

    click to show


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

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

    Решено

    Это отличный вопрос! (Мне тоже потребовалось много времени, чтобы понять)

    ** Итак, по сути, вы спрашиваете:**

    • Почему мы храним uint(....) там? * И почему мы там имеем дело с int_msg_info?

    1/ Структура сообщения

    Чтобы понять, почему мы храним uint(...) в сообщении, вам нужно понять, как TVM работает для Message. На практике макет сообщения показывает, что для "сжатия" сообщения, которое мы хотим сохранить, мы должны сохранить его в "ячейку" и загрузить в смарт-контракт в качестве сообщения.

    2/ Значения по умолчанию для полей сообщений

    Есть ряд значений, которые нам нужно установить "по умолчанию", указав значения для bounced, src, ihr_fee, fwd_fee в некоторых случаях.

    Например, ниже приведен пример сообщения, которое мы помещаем в ячейку:

    var msg = begin_cell()
        .store_uint(0, 1) ;; tag
        .store_uint(1, 1) ;; ihr_disabled
        .store_uint(1, 1) ;; allow bounces
        .store_uint(0, 1) ;; not bounced itself
        .store_slice(source)
        .store_slice(destination)
        ;; serialize CurrencyCollection (see below)
        .store_coins(amount)
        .store_dict(extra_currencies)
        .store_coins(0) ;; ihr_fee
        .store_coins(fwd_value) ;; fwd_fee 
        .store_uint(cur_lt(), 64) ;; lt of transaction
        .store_uint(now(), 32) ;; unixtime of transaction
        .store_uint(0,  1) ;; no init-field flag (Maybe)
        .store_uint(0,  1) ;; in-place message body flag (Either)
        .store_slice(msg_body)
      .end_cell();
    

    3/ Значение целых чисел в .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1)

    Целые числа, используемые в .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) укажите количество битов в соответствии со схемой TL-B с разбивкой по длине полей, которые там указаны. Но мы всегда указываем 0.

    Каждое целое число представляет длину в битах определенного поля в заголовке.

    • Первое целое число '1' предназначено для поля tag * За ним следуют два '4для полейihr_disabledиbounce* Затем 64 бита для поляcreated_lt* 32 бита для поляcreated_at' * и, наконец, два 1' для 'init и `поля тела.

    Однако в приведенном примере все поля пусты, поэтому мы указываем 0 бит для всех полей.


    Ссылка:

    • https://docs.ton.org/develop/smart-contracts/messages#message-layout * https://docs.ton.org/develop/smart-contracts/tutorials/wallet#commonmsginfo
    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.