TONboard

TON Blockchain Architecture

3 мин чтенияобновлено 2026-05-29✏️ Предложить правку🕑 История
Содержание (15)

TON Blockchain Architecture — система хранения и управления данными в TON:

  • организация данных как bag of cells;
  • шардирование на уровне аккаунтов (ISP);
  • условия консенсуса и валидации;
  • masterchain координирует все шарды и параметры сети.

Bag of Cells#

Все данные TON представлены коллекцией ячеек (cells). Каждая ячейка содержит:

  • до 1023 бит данных;
  • до 4 ссылок на другие ячейки (по SHA-256-хешам);
  • 2 байта-дескриптора + сами данные.

Ячейки организованы в деревья или DAG (Directed Acyclic Graph). Сериализация — по схемам TL-B (Type Language — Binary).

Infinite Sharding Paradigm (ISP)#

Каждый аккаунт — это отдельный accountchain. Виртуальные блоки accountchain'ов группируются в блоки шардчейна для эффективности.

Состояние шардчейна = состояния всех аккаунтов шарда. Блок шардчейна = коллекция виртуальных блоков для каких-то аккаунтов.

В TON нет различия между «смарт-контрактом» и «аккаунтом» — это одна сущность.

Структура блока шардчейна#

Делится на 2 части:

Неразделённая (non-split)

КомпонентСодержание
InMsgDescrОписание входящих сообщений
OutMsgDescrОписание исходящих сообщений
Block headerХеши, параметры блока
OutMsgQueueОчередь недоставленных сообщений (удаляются после доставки в соседние шарды)

Разделённая (split)

Hashmap account_id → account_state. State аккаунта:

  • баланс в Grams;
  • код смарт-контракта;
  • постоянные данные контракта;
  • статистика использования хранилища;
  • опциональное формальное описание интерфейса;
  • публичная информация пользователя.

Masterchain#

  • Не делится и не объединяется (single chain);
  • Один предшественник (кроме нулевого блока с initial config);
  • Содержит список всех активных шардов и последних блоков каждого;
  • Хранит конфигурируемые параметры через специальный config-контракт.

Конфигурационные параметры

  • Минимальный взнос валидаторов;
  • Максимальный размер группы валидаторов;
  • Макс. количество блоков, за которые отвечает группа;
  • Процесс выборов и наказания валидаторов;
  • Текущий и следующий наборы валидаторов;
  • Процесс изменения параметров.

Начальные значения и код фундаментальных смарт-контрактов — в нулевом блоке masterchain.

Условия консенсуса#

Гарантируют корректность изменения данных только через валидные транзакции.

ТипОписание
ГлобальныеИнварианты для всей сети (например, гарантии доставки сообщений)
Внутренние локальныеВнутри одного блока (например, обработка входящих сообщений)
Внешние локальныеМежду блоками, обычно соседних шардов

Блок валиден, если выполняет все применимые условия. Ответственность валидаторов — генерация и проверка.

Логическое время (LT)#

64-битное неотрицательное целое, присваивается событиям:

  • Зависимое событие имеет LT больше всех своих зависимостей;
  • Независимое событие имеет LT = 0;
  • Исходящие сообщения наследуют LT из транзакции;
  • Транзакция и блок имеют временной интервал, фиксируемый в заголовке.

LT нужен для упорядочивания событий без глобальных часов.

Общее состояние и visibility#

  • Блок masterchain фиксирует состояние всех шардов через хеши их последних блоков;
  • Блок шардчейна содержит хеш последнего блока masterchain в заголовке;
  • «Видимые» блоки — те, что указаны в этом блоке masterchain + их предшественники;
  • Блок шарда импортирует сообщения из OutMsgQueue видимых соседей; не может включить сообщения из невидимых блоков.

Смарт-контракты#

Создание

Применимо к базовому воркчейну и masterchain (другие воркчейны могут иметь свои механизмы):

  1. Сообщение на ранее не упомянутый адрес со значением → создаёт «неинициализированный аккаунт» с балансом, но без кода и данных;
  2. Constructor-сообщение содержит initial code + data → создаёт смарт-контракт;
  3. Constructor обычно несёт значение для первоначального баланса (минимум зависит от storage-fee);
  4. Смарт-контракты могут сами создавать новые смарт-контракты при транзакциях.

Модификация

  • Постоянные данные изменяются при выполнении кода в TVM;
  • Если код не предусматривает изменений → данные неизменны;
  • Сам код может быть изменён, только если текущий код это разрешает.

Уничтожение и заморозка

  • Контракт нельзя уничтожить, пока баланс > минимума;
  • При отрицательном балансе аккаунт замораживается — code + data заменяются на 32-байтовый хеш;
  • Хеш хранится некоторое время → владелец может восстановить аккаунт, переведя средства и отправив сообщение с code + data.

Похожие статьи#

ℹ️ Информация проверена: 2024

Подготовлено

TONboard

Поддержите проект чаевыми в TON.

Комментарии

Комментарий стоит небольшую он-чейн комиссию — она отсекает спам.
  • Пока нет комментариев — будьте первым.