Найти тему

Типы сообщений и фазы вычислений

Оглавление

Теперь вы знаете:

  • Существует два вида входящих сообщений, которые могут поступить в контракт: внешние и внутренние.
  • Внешнее сообщение на самом деле просто строка данных, которая исходит из ниоткуда с точки зрения блокчейна. Эти данные не аутентифицируются сами по себе. К нему не привязаны какие-либо деньги в виде Toncoins. И он действительно может содержать все, чего хочет автор контракта.
  • Внутренние сообщения - это те, которые отправляются контрактами на другие контракты. И эти сообщения имеют немного более богатую структуру. Прежде всего, внутренние сообщения могут нести балансы. И когда контракт отправляет сообщение на другой контракт, они могут прикрепить к нему любое количество монет. Во-вторых, эти сообщения надежно аутентифицируются по адресу отправляемого контракта. И вся архитектура TON гарантирует контрактам, что этот адрес отправителя является правильным.
  • Сделка представляет собой комплекс изменений в состоянии контракта.
  • Существует пять фаз, через которые проходит транзакция: фаза хранения, фаза кредита, фаза вычислений, фаза действия, фаза отскока.
  • Фаза хранения - это фаза, когда блокчейн взимает с контракта всю арендную плату, которую он должен за свое существование. И арендная плата вычисляется как цена за бит в секунду.
  • Кредитная фаза - это фаза, когда монеты, прикрепленные к входящему сообщению, зачисляются в контракт.
  • На этапе вычислений TVM выполняет код и проверяет каждую операцию, а также отслеживает использование газа.
  • На этапе действия смарт-контракт переходит в новое состояние, и исходящие сообщения обрабатываются.
  • Фаза отскока происходит, если контракт не удался, а во входящем сообщении был флаг, в котором говорилось, что я возвращаюсь. Это означает, что на данном этапе, если произойдет какой-либо сбой и останутся деньги от входящего сообщения, то контракт создаст исходящее сообщение обратно отправителю, чтобы вернуть деньги.

📚Чтение Заметок

Давайте погрузимся в то, как обрабатывается сообщение и что на самом деле является транзакцией.

💌 Для того, чтобы контракт изменил свое состояние, он должен получить сообщение. Это называется входящем сообщением.

Существует два типа входящих сообщений:

⚪ - Внешние сообщения. 🔵 - Внутренние сообщения.

Внешние сообщения.

Внешнее сообщение - строка данных, которая поступает из ниоткуда с точки зрения блокчейна. Эти данные не 🆔 аутентифицируются сами по себе.

К нему не привязаны деньги в виде 💎 Toncoins.

Он действительно может содержать все, что хочет автор контракта
.
❗ Работа контракта заключается в том, чтобы разобраться в этих данных и разоборе их прямо внутри его кода.

Внутренние сообщения.

Внутренние сообщения - Те, которые отправляются по контрактам на другие контракты. 👥 Эти сообщения имеют немного более богатую структуру:

Внутренние сообщения могут нести баланс. 💸

Эти сообщения надежно аутентифицируются по адресу отправляемого контракта. 🔑 Вся архитектура TON гарантирует контрактам, что этот адрес отправителя является правильным.

Обработка сообщений и кодов операций.

После того, как контракт получил сообщение, он может иметь два отдельных обработчика для внутренних и внешних. Оба вида сообщений будут иметь произвольные 🗻 данные полезной нагрузки, которые разработаны автором контракта. Если контракт хочет обрабатывать различные виды сообщений, то он будет использовать то, что мы называем opcodes.

Коды операций (коды операций) 🔢 - префикс в четыре байта в пользовательских данных в сообщении, чтобы указать тип операции, которую должен поддерживать контракт.

Транзакции.

❓Что такое транзакция?
Транзакция 💸 - комплекс изменений в состоянии контракта. ❗ Сообщение - это не транзакция, это просто вход в транзакцию!

❓Что делает транзакция?

1. ▶️ Это меняет состояние контракта. 2. 📋 Он создает список исходящих действий.

Этапы транзакции.

Есть пять фаз 5️⃣, через которые проходит транзакция:

Фаза хранения 📒 Вычитает плату за хранение на основе байтов, хранящихся по контракту с момента последней транзакции. Если средств недостаточно, контракт переходит в замороженное состояние, сохраняя свое состояние в течение ограниченного времени.

Кредитная фаза 🏦
Именно здесь монеты, прикрепленные к входящему сообщению, зачисляются в контракт.

Фаза вычислений 💻
Именно здесь оживает ваша программа. TVM выполняет код и проверяет каждую операцию, а также отслеживает использование газа.

Фаза действий 🏃
Самое важное действие на этом этапе - это новое состояние контракта. Ваш контракт может в конце исполнения или на любом промежуточном этапе создать для себя новое состояние и новое хранилище, и это будет зарегистрировано после успешного исполнения контракта. В списке есть другие действия, и эти действия являются исходящими сообщениями.

Фаза отскака 🎱
Это происходит, если контракт провалился, и во входящем сообщении был флаг, в котором говорилось, что я отскакиваю. Это означает, что на данном этапе, если произойдет какой-либо сбой и останутся деньги от входящего сообщения, то контракт создаст исходящее сообщение обратно отправителю, чтобы вернуть деньги. Это функция безопасности, которая позволяет людям вернуть большую часть средств в случае возникновения какой-либо ошибки или сбоя в контракте.

Заключение.

Давайте сделаем резюме:

  • TКонтракт получает входящую информацию, которая может быть внутренней или внешней.
  • Внутренние сообщения могут нести деньги и могут быть аутентифицированы по адресу отправляемого контракта, в то время как внешние сообщения вообще не аутентифицируются сами по себе, и создание аутентификации заключается в работе контракта.
  • Выполнение сделки проходит через пять этапов. Этап хранения для взимания арендной платы.
  • Кредитный этап, когда входящие монеты зачисляются на баланс.
Фаза вычислений, на которой выполняется ваш код.

Этап действия при обновлении хранилища и маршрутизации исходящих сообщений.

Фаза отскока, когда контракт имеет дело с сбоями и отправляет монеты обратно отправителю.

Наука
7 млн интересуются