Документация по адресам смарт-контрактов
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
В этом разделе описываются особенности адресов смарт-контрактов в блокчейне TON. Он также объясняет, как акторы являются синонимами смарт-контрактов в TON.
Всё является смарт-контрактом
В TON смарт-контракты создаются с использованием акторной модели. Фактически, акторы в TON технически представлены как смарт-контракты. Это означает, что даже ваш кошелек является простым актором (и смарт-контрактом).
Обычно акторы обрабатывают входящие сообщения, изменяют свои внутренние состояния и в результате генерируют исходящие сообщения. Вот почему каждый субъект (т. е. актор-контракт) в блокчейне TON должен иметь адрес, чтобы он мог получать сообщения от других акторов.
В виртуальной машине Ethereum (EVM) адреса полностью отделены от смарт-контрактов. Не стесняйтесь узнать больше о различиях, прочитав нашу статью "Шесть уникальных аспектов блокчейна TON, которые удивят разработчиков Solidity" от Тала Кола.
Адрес смарт-контракта
Адреса смарт-контрактов в TON обычно состоят из двух основных компонентов:
-
(workchain_id): Обозначает идентификатор воркчейна (подписанное 32-битное целое число)
-
(account_id) Обозначает адрес аккаунта (64-512 бит, в зависимости от воркчейна)
В разделе обзора необработанных адресов этой документации мы обсудим, как представлены пары (workchain_id, account_id).
Идентификатор воркчейна и идентификатор аккаунта
Идентификатор воркчейна
Как мы уже видели ранее, можно создать до 2^32
воркчейнов, работающих на блокчейне TON. Мы также отметили, как 32-битные префиксные адреса смарт-контрактов идентифицируют и связываются с адресами смарт-контрактов в разных воркчейнов. Это позволяет смарт-контрактам отправлять и получать сообщения в разные воркчейны на блокчейне TON и из них.
В настоящее время в блокчейне TON работают только Мастерчейн (workchain_id=-1) и иногда базовый воркчейн (workchain_id=0).
Оба имеют 256-битные адреса, поэтому мы предполагаем, что workchain_id равен 0 или -1, а адрес внутри воркчейна равен ровно 256 битам.