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). Шардчейн обрабатывает транзакции только для аккаунтов, чьи адреса попадают в определённый диапазон.
Как происходит разделение
Шардирование работает по принципу двоичного дерева:
- Изначально workchain имеет один шард, обрабатывающий все адреса (0x0000…0xFFFF)
- Когда нагрузка на шард растёт, он разделяется на два дочерних шарда
- Каждый дочерний шард обрабатывает свою половину адресного диапазона
- Разделение может продолжаться рекурсивно — до 2^60 шардов на workchain
В теории каждый аккаунт может получить свой собственный шардчейн — это и есть Infinite Sharding Paradigm. На практике количество шардов зависит от текущей нагрузки на сеть.
Когда шарды разделяются и объединяются
| Событие | Условие | Результат |
|---|---|---|
| Разделение (split) | Нагрузка на шард превышает порог | Шард делится на 2 дочерних |
| Объединение (merge) | Нагрузка на два соседних шарда низкая | Два шарда сливаются в один |
Процесс управляется автоматически на уровне протокола. Валидаторы отслеживают нагрузку и принимают решение о split/merge.
Маршрутизация сообщений между шардами
Когда контракт в одном шарде отправляет сообщение контракту в другом шарде, сообщение проходит через маршрутизацию:
- Исходный шард создаёт исходящее сообщение (out_msg)
- Masterchain включает хеш блока шарда в свой блок
- Целевой шард видит сообщение в следующем блоке и обрабатывает его
Из-за маршрутизации между шардами сообщения доставляются асинхронно. Контракт не может получить ответ в той же транзакции. Это ключевое отличие от синхронной модели Ethereum.
TON vs Ethereum: Шардирование
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…)
Частые ошибки
- Проектируют контракты в расчёте на то, что два контракта будут в одном шарде, хотя шардирование динамическое и контракты могут оказаться в разных шардах в любой момент.
- Не учитывают задержку при межшардовом взаимодействии: сообщение между контрактами в разных шардах идёт несколько блоков, а не мгновенно.
- Путают workchain и shardchain: workchain это логическая цепочка со своими правилами, а shardchain это динамическое подразделение workchain.
- Считают, что шардирование нужно настраивать вручную, хотя в TON оно полностью автоматическое и управляется протоколом.
Проверка знанийПри каком условии шардчейн в TON разделяется на два дочерних шарда?
Check Your Understanding
Finished the lesson?
Mark it as complete to track your progress
Войдите чтобы оценить урок