TON vs Ethereum

Архитектурные отличия TON и Ethereum для разработчика: аккаунты, сообщения, шарды и модель исполнения.

TON vs Ethereum — коротко

Ethereum — одна глобальная state machine с синхронными вызовами контрактов. TON — сеть акторов: контракты общаются асинхронными сообщениями, состояние разнесено по шардам. Если привык к call / delegatecall, на TON нужно мыслить очередью сообщений и отдельным балансом у каждого контракта.


Таблица сравнения

ПараметрTONEthereum
МодельActor model, async messagesСинхронные call между контрактами
МасштабДинамические шардыОдин L1 state (+ L2 отдельно)
АккаунтКошелёк и контракт — смарт-контрактыEOA + contract account
Оплата газаОтправитель / цепочка сообщений, bounceMsg.sender платит gas за весь call stack
ТокеныJetton (отдельный wallet на владельца)ERC-20 (балансы в одном контракте)
Время финальностиСекунды (после accept)Блоки + финальность консенсуса

Когда мыслить «как в TON»

  • Нужна высокая пропускная способность без выноса логики на отдельный L2
  • Логика естественно раскладывается на сообщения: платёж → подтверждение → колбэк
  • Токены и NFT живут как отдельные контракты-кошельки, а не map в одном storage

Когда аналогия с Ethereum вредна

  • Ожидаешь атомарный «вызов A → B → C в одной транзакции» — на TON это цепочка сообщений, часть может отвалиться с bounce
  • Хранишь все балансы токена в одном контракте «как ERC-20» — в TON стандарт другой
  • Считаешь, что msg.sender всегда «человек с кошелька» — часто это промежуточный контракт

Пример: async вместо sync call

На Ethereum контракт A синхронно читает B. На TON A отправляет сообщение и позже получает ответ (или bounce):

typescript
// @ton/core ^0.27, @ton/ton ^15
import { beginCell, toNano, Address } from "@ton/core";

// Internal message: body = op + query_id + payload
const body = beginCell()
  .storeUint(0x12345678, 32) // op
  .storeUint(0n, 64) // query_id
  .endCell();

// Отправка — не «return value», а сообщение в очередь
await contract.send(
  sender,
  { value: toNano("0.05") },
  body,
);

Переноси логику с Ethereum на TON только после того, как переписал «sync call graph» в «message graph». Остальное — детали синтаксиса.

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация