TON vs Ethereum: Полное сравнение
Большинство блокчейн-разработчиков приходят в TON с опытом Ethereum, и перенос привычных паттернов без понимания ключевых различий — главный источник ошибок. Это сравнение — не академическое упражнение, а практическое руководство: зная, чем TON отличается от Ethereum, вы избежите архитектурных ошибок, которые будет дорого исправлять. Асинхронная модель, отсутствие атомарных кросс-контрактных вызовов и плата за хранение меняют все правила игры.
TON и Ethereum — два принципиально разных подхода к построению блокчейна. В этом уроке мы систематически сравним их архитектуры, чтобы лучше понять уникальные решения TON.
1. Модель состояния
| Аспект | TON | Ethereum |
|---|---|---|
| Структура | Per-account tree of cells | Глобальный State Trie (MPT) |
| Единица данных | Cell (1023 бит, 4 ссылки) | RLP-encoded node (произвольный размер) |
| Доступ | Прямой к аккаунту | Через корень MPT |
| Масштабирование | Шардируется по аккаунтам | Всё в одном дереве |
В Ethereum все аккаунты хранятся в едином State Trie. Изменение одного аккаунта требует пересчёта хешей по пути до корня дерева.
В TON каждый аккаунт — независимый актор со своим деревом ячеек. Это позволяет параллельно обрабатывать аккаунты на разных шардах.
Подробнее о State Trie Ethereum
Modified Merkle Patricia Trie (MPT) в Ethereum — сложная структура с 3 типами узлов (branch, extension, leaf). TON выбрал более простой подход — дерево ячеек с фиксированными ограничениями.
Ethereum State Trie (MPT)2. Модель исполнения
| Аспект | TON (TVM) | Ethereum (EVM) |
|---|---|---|
| Парадигма | Асинхронные акторы | Синхронные вызовы |
| Вызов контракта | Отправка сообщения | CALL/DELEGATECALL |
| Ответ | В отдельной транзакции | В том же вызове |
| Параллелизм | Да (между шардами) | Нет |
| Стек | Стек ячеек (256-бит + cells) | Стек 256-бит слов |
Синхронная модель Ethereum
В Ethereum контракт A вызывает контракт B через CALL, и ждёт результат в той же транзакции. Это просто для разработчика, но ограничивает масштабирование.
Асинхронная модель TON
В TON контракт A отправляет сообщение контракту B. Контракт B обрабатывает сообщение в отдельной транзакции и может отправить ответное сообщение. Это сложнее для разработчика, но позволяет параллельное исполнение.
EVM: Стек, Память, Хранилище
EVM использует 3 области памяти: стек (256-бит слова), memory (линейный массив байтов) и storage (ключ-значение). TVM использует стек ячеек и continuation-based управление потоком.
EVM: Stack, Memory, Storage3. Шардирование
| Аспект | TON | Ethereum |
|---|---|---|
| Встроенное | Да (Infinite Sharding) | Нет |
| Масштабирование | L1 шардирование | L2 rollups |
| Количество шардов | До 2^60 на workchain | - |
| Кросс-шард | Асинхронные сообщения | - |
| Автоматическое | Да (split/merge) | - |
Ethereum изначально планировал шардирование (64 шарда), но отказался от этого подхода в пользу rollup-centric roadmap. Масштабирование L1 оставлено L2-решениям (Optimistic и ZK rollups).
TON, напротив, строит масштабирование внутри L1 — шарды создаются и уничтожаются автоматически в зависимости от нагрузки.
4. Модель газа
| Аспект | TON | Ethereum |
|---|---|---|
| Цена газа | Per-workchain (фиксированная) | Глобальная (аукцион) |
| Base fee | Нет аукциона | EIP-1559 base fee |
| Storage fee | Да (плата за хранение) | Нет |
| Форвард-газ | Да (пересылка газа с сообщением) | Нет аналога |
EIP-1559 и газ в Ethereum
Ethereum использует аукционную модель газа с base fee и priority fee. В TON цена газа фиксирована для каждого workchain и определяется конфигурацией сети.
Газ и исполнение в EthereumStorage fees в TON
Уникальная особенность TON — плата за хранение. Каждый аккаунт платит за занимаемое место в блокчейне. Если баланс опускается до нуля, аккаунт замораживается и затем удаляется. Это предотвращает бесконечный рост состояния.
5. Консенсус
| Аспект | TON | Ethereum |
|---|---|---|
| Алгоритм | Catchain BFT | Casper FFG + LMD-GHOST |
| Финальность | Мгновенная (~5 сек) | ~13 минут (2 эпохи) |
| Валидаторов | ~350 | ~1,000,000 |
| Ротация | Каждые 18 часов | Непрерывная |
| Минимальный стейк | ~300,000 TON | 32 ETH |
TON использует Catchain BFT — Byzantine Fault Tolerant консенсус с мгновенной финальностью. Блок считается финальным сразу после подтверждения 2/3+ валидаторов.
Ethereum использует Casper FFG с вероятностной финальностью. Блок считается финальным через 2 эпохи (~13 минут).
6. Смарт-контракты
| Аспект | TON | Ethereum |
|---|---|---|
| Основной язык | Tact | Solidity |
| Низкоуровневый | FunC / Tolk | Yul / Assembly |
| VM | TVM (стековая, cells) | EVM (стековая, 256-бит) |
| Деплой | StateInit (код + данные) | Bytecode + constructor |
| Обновляемость | Через set_code | Proxy pattern |
Сводная таблица
| Категория | TON | Ethereum |
|---|---|---|
| Модель состояния | Per-account cells | Глобальный MPT |
| Исполнение | Async акторы | Sync вызовы |
| Шардирование | Infinite (L1) | Нет (L2 rollups) |
| Газ | Фиксированный + storage fee | EIP-1559 аукцион |
| Консенсус | Catchain BFT (~5s) | Casper FFG (~13min) |
| Язык | Tact / FunC | Solidity / Vyper |
| Интеграция | Telegram | - |
| Адреса | 36 байт (workchain + hash) | 20 байт (keccak160) |
Частые ошибки
- Пытаются реализовать паттерн «вызвал контракт — получил результат в той же транзакции» (как в Ethereum), хотя в TON все межконтрактные вызовы асинхронны.
- Используют паттерн approve + transferFrom как в ERC-20, хотя в TON Jetton-стандарт работает принципиально иначе — через transfer с forward-payload.
- Забывают про storage fees: в Ethereum данные хранятся «бесплатно» после записи, а в TON контракт платит за хранение каждую секунду.
- Не обрабатывают bounced-сообщения, полагаясь на атомарный откат как в EVM, хотя в TON откат происходит только внутри одной транзакции.
Проверка знанийНазовите три ключевых архитектурных отличия TON от Ethereum.
Check Your Understanding
Finished the lesson?
Mark it as complete to track your progress
Войдите чтобы оценить урок