Learning Platform
Глоссарий Troubleshooting
Урок 02.03 · 25 мин
Средний
WorkchainsShardingШардчейныМасштабирование

Workchains и Шардирование

Шардирование — это ключевое архитектурное решение, которое делает TON масштабируемым блокчейном. Представьте автомагистраль: вместо одной полосы для всего трафика, TON автоматически добавляет новые полосы при увеличении нагрузки. Для разработчика это означает, что контракты на разных шардах обрабатываются параллельно, но взаимодействие между шардами становится асинхронным, что требует особого подхода к проектированию.

Одна из самых мощных особенностей TON — бесконечное шардирование (Infinite Sharding Paradigm). В этом уроке мы разберём, как workchains делятся на шардчейны и почему это обеспечивает практически неограниченную масштабируемость.


Что такое Workchain

Workchain — это независимый блокчейн внутри экосистемы TON со своими правилами обработки транзакций. TON поддерживает до 2^32 workchains, хотя на практике сейчас используется только один:

  • Workchain 0 (Basechain) — основной workchain для смарт-контрактов и пользовательских транзакций. Все TON-кошельки, Jetton-контракты и NFT работают здесь.
  • Workchain -1 (Masterchain) — технически тоже workchain, но выделен для системных контрактов.

Каждый workchain может иметь:

  • Свой формат адресов
  • Свою виртуальную машину
  • Свои правила обработки транзакций
  • Свою криптовалюту (хотя Toncoin — основная)

Шардирование в TON

Что такое шардчейн

Каждый workchain автоматически делится на шардчейны (shard chains). Шардчейн обрабатывает транзакции только для аккаунтов, чьи адреса попадают в определённый диапазон.

Иерархия шардов TON
Masterchain
Workchain
Системные контракты
Шардчейн
Masterchain
Workchain 0 (Basechain)
Shard 0...7fff
Shard 8000...ffff
Workchain -1 (Masterchain)
Демо шардирования:
Нажмите на узлы для раскрытия дерева. Masterchain координирует workchains, каждый workchain делится на шардчейны по диапазону адресов аккаунтов.

Как происходит разделение

Шардирование работает по принципу двоичного дерева:

  1. Изначально workchain имеет один шард, обрабатывающий все адреса (0x0000…0xFFFF)
  2. Когда нагрузка на шард растёт, он разделяется на два дочерних шарда
  3. Каждый дочерний шард обрабатывает свою половину адресного диапазона
  4. Разделение может продолжаться рекурсивно — до 2^60 шардов на workchain
NOTE

В теории каждый аккаунт может получить свой собственный шардчейн — это и есть Infinite Sharding Paradigm. На практике количество шардов зависит от текущей нагрузки на сеть.

Когда шарды разделяются и объединяются

СобытиеУсловиеРезультат
Разделение (split)Нагрузка на шард превышает порогШард делится на 2 дочерних
Объединение (merge)Нагрузка на два соседних шарда низкаяДва шарда сливаются в один

Процесс управляется автоматически на уровне протокола. Валидаторы отслеживают нагрузку и принимают решение о split/merge.


Маршрутизация сообщений между шардами

Когда контракт в одном шарде отправляет сообщение контракту в другом шарде, сообщение проходит через маршрутизацию:

  1. Исходный шард создаёт исходящее сообщение (out_msg)
  2. Masterchain включает хеш блока шарда в свой блок
  3. Целевой шард видит сообщение в следующем блоке и обрабатывает его
WARNING

Из-за маршрутизации между шардами сообщения доставляются асинхронно. Контракт не может получить ответ в той же транзакции. Это ключевое отличие от синхронной модели Ethereum.


TON vs Ethereum: Шардирование

TIP

TON vs Ethereum: Подход к масштабированию

Ethereum L1 не имеет встроенного шардирования. Масштабирование достигается через L2 решения (rollups). В TON шардирование встроено в протокол и работает автоматически без дополнительных слоёв.

Архитектура Ethereum

Идентификация шардов

Каждый шард идентифицируется парой (workchain_id, shard_prefix):

  • workchain_id — номер workchain (0 для basechain)
  • shard_prefix — битовый префикс адресов, обрабатываемых шардом

Например:

  • (0, 0x8000000000000000) — шард, обрабатывающий все адреса basechain (полный шард)
  • (0, 0x4000000000000000) — левая половина (адреса 0x0…0x7fff…)
  • (0, 0xC000000000000000) — правая половина (адреса 0x8000…0xffff…)

Частые ошибки

  1. Проектируют контракты в расчёте на то, что два контракта будут в одном шарде, хотя шардирование динамическое и контракты могут оказаться в разных шардах в любой момент.
  2. Не учитывают задержку при межшардовом взаимодействии: сообщение между контрактами в разных шардах идёт несколько блоков, а не мгновенно.
  3. Путают workchain и shardchain: workchain это логическая цепочка со своими правилами, а shardchain это динамическое подразделение workchain.
  4. Считают, что шардирование нужно настраивать вручную, хотя в TON оно полностью автоматическое и управляется протоколом.

Проверка знанийKnowledge check
При каком условии шардчейн в TON разделяется на два дочерних шарда?
ОтветAnswer
Шардчейн разделяется, когда нагрузка на него (количество транзакций, потребление газа) превышает определённый порог. Каждый дочерний шард получает половину адресного диапазона родительского шарда и обрабатывает только аккаунты из своего диапазона.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Какой максимальный теоретический предел количества шардов в одном workchain TON?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 7