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 сек (legacy Catchain); 200–400 мс с Catchain 2.0 (Q1 2026) | ~13 минут (2 эпохи) |
| Валидаторов | ~350 | ~1,000,000 |
| Ротация | Каждые 18 часов | Непрерывная |
| Минимальный стейк | 400 000 TON (после reduction Aug 2025; param 15) | 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 откат происходит только внутри одной транзакции.