Перейти к основному содержимому

Различия блокчейнов

Введение

В этом разделе мы рассмотрим основные различия между блокчейнами Ethereum и TON. В рамках анализа мы разберём сетевые архитектуры, опишем их уникальные особенности, оценим преимущества и недостатки.

Начиная с обзора экосистем Ethereum и TON, стоит отметить, что обе платформы предлагают схожую структуру участников и сервисов. Структура включает пользователей, которые владеют активами и совершают транзакции, валидаторов, которые поддерживают работу и безопасность сети, а также разработчиков приложений, использующих блокчейн как основу для своих продуктов и услуг. В обеих экосистемах есть кастодиальные и некастодиальные сервисы, предоставляющие пользователям различные уровни контроля над их активами.

Также важно, что обе платформы поддерживают создание децентрализованных приложений (dApps), давая разработчикам мощные инструменты и стандарты для разработки.

Однако, несмотря на сходства в общей структуре и предлагаемых функциях, ключевые технологические аспекты и подходы к проектированию сети Ethereum и TON существенно различаются. Эти различия позволяют глубже понять уникальные преимущества и ограничения каждой платформы, что важно для разработчиков, стремящихся получить от каждой сети максимум. В следующих подразделах мы изучим эти различия, сосредоточившись на сетевой архитектуре, моделях, механизмах транзакций и системе расчётов транзакций, что предоставит разработчикам необходимую информацию.

Различия между TON и Ethereum

Аккаунт

В первом подразделе мы сравнили Ethereum и TON, описав их ключевые архитектурные различия и главные вызовы, с которыми сталкивается Ethereum. Отдельного внимание заслуживает то, как в этих блокчейнах различаются подходы к организации взаимодействий и использованию моделей. Эти различия возникают из-за уникальных архитектурных решений в каждой из платформ. Разработчикам, привыкшим к Ethereum, важно понять эти различия, чтобы их переход к разработке в TON был эффективным. Это позволит адаптировать архитектуру и оптимизировать взаимодействие смарт-контрактов в новой среде.

Ethereum

Ethereum использует для отслеживания балансов модель, основанную на аккаунтах. Аккаунт хранит информацию о балансах различных монет, как обычный счёт в банке. Они бывают двух типов:

  • Externally-owned accounts (EOAs) — аккаунты, управляемые извне блокчейна пользователем с помощью пары публичных и приватных ключей. Публичный ключ позволяет другим отправлять платежи на этот аккаунт.
  • Contract accounts — это аккаунты, управляемые кодом смарт-контракта, а не приватными ключами. Поскольку у них нет приватного ключа, они не могут самостоятельно инициировать транзакции.

Когда пользователь Ethereum создает кошелёк, новый EOA добавляется в глобальное состояние на всех узлах децентрализованной сети. Развёртывание смарт-контракта создаёт contract account, способный хранить и распределять средства программно в зависимости от определённых условий. Оба типа аккаунтов имеют балансы, хранилище и могут инициировать транзакции, вызывая функции в других аккаунтах. Эта структура позволяет Ethereum быть «программируемой валютой».

В Ethereum реализована синхронная обработка транзакций, где каждая транзакция обрабатывается по очереди, в строгом порядке. Благодаря этому состояние блокчейна всегда остаётся консистентным и предсказуемым для всех участников сети. Все транзакции атомарны: они либо завершаются успешно, либо неуспешно, без частичного или незавершённого исполнения. Более того, когда один смарт-контракт вызывает другой, этот вызов происходит немедленно в рамках всё той же транзакции. Но есть и недостатки: транзакция может разрастаться. Синхронность в этом случае приводит к перегрузкам, поскольку вычисления не могут выполняться параллельно. По мере роста числа контрактов и пользователей эта невозможность параллелизации становится важным фактором, ограничивающим рост сети.

TON

Модель акторов — это подход к параллельным и распределённым вычислениями, где главным элементом становится актор: независимый исполняемый блок кода. Изначально эта модель была создана для кластерных вычислений, а теперь широко применяется с микросервисной архитектурой, потому что её возможности в масштабируемости, параллелизме и отказоустойчивости соответствуют современным требованиям к распределённым системам. Акторы получают и обрабатывают сообщения. В зависимости от логики сообщения, они реагируют либо внесением локальных изменений, либо совершением ответных действий, и могут создавать новых акторов или отправлять сообщения дальше. Они являются потокобезопасными и рекурсивно вызываемыми, что позволяет избежать блокировок и упрощает параллельную обработку задач. Эта модель идеальна для построения масштабируемых и надёжных серверных решений, предоставляя эффективный контроль конкурентного доступа и поддерживая как синхронные, так и асинхронные сообщения.

В TON всё представлено смарт-контрактами, и их называют акторами в контексте акторной модели. Смарт-контракт — это объект со свойствами адреса, кода, данных и баланса. Он способен хранить данные, а также действовать в соответствии с инструкциями, полученными от других смарт-контрактов. Когда контракт получает сообщение и обрабатывает его, выполняя код в TVM, могут возникать различные сценарии:

  • Контракт изменяет свои свойства code, data, balance
  • Контракт опционально генерирует исходящие сообщения
  • Контракт переходит в режим ожидания до тех пор, пока не произойдёт следующее событие

Результатом любого из этих сценариев всегда будет создание транзакции. Сами же транзакции асинхронны, что означает, что система может продолжать обрабатывать другие транзакции, пока ожидает завершения предыдущих. Это даёт больше гибкости при обработке сложных транзакций. Иногда для одной транзакции требуется выполнение нескольких вызовов смарт-контрактов в определённой последовательности. Поскольку эти вызовы асинхронные, разработчикам проще проектировать и реализовывать сложные потоки транзакций, которые могут включать несколько конкурентные операции.

Разработчик, переходящий с Ethereum, должен учесть, что смарт-контракты в блокчейне TON могут обмениваться данными друг с другом только отправкой асинхронных сообщений. Это означает, что при запросе данных из другого контракта вы не можете рассчитывать на получение немедленного ответа. Вместо этого требуется вызов get-методов клиентами извне сети. Это подобно тому, как Ethereum-кошелёк может использовать узлы RPC вроде Infura для запроса состояния смарт-контрактов. Это важное ограничение по нескольким причинам. Например, flash loans — это вид транзакций, которые должны быть выполнены в рамках одного блока, поланаясь на возможность проведения заёма и возврата в рамках одной транзакции.

Это требование соответствует синхронной природе EVM Ethereum, но в TON асинхронность всех транзакций делает выполнение flash loan невозможным. Кроме того, в TON сложнее проектировать оракулов, которые предоставляют смарт-контрактам внешние данные. О том, что такое оракулы и как их использовать в TON, можно прочитать по ссылке.

Кошельки

Ethereum

Ранее мы уже обсуждали, что в Ethereum кошелек пользователя генерируется на основе его адреса, который находится в отношении 1 к 1 с его открытым ключом.В свою очередь в TON все кошельки являются смарт-контрактами, которые должны быть развернуты самим пользователем.

В Ethereum разработчики используют кошельки с мультиподписью вроде gnosis. В Ethereum разработчики используют кошельки с мультиподписью вроде gnosis. Стандарт ERC-4337 добавляет так называемую абстракцию аккаунта. Он расширяет функциональность кошельков, позволяя отправлять транзакции без нативного токена, восстанавливать аккаунты после утери, и так далее.

Однако важно отметить, что с точки зрения расхода газа аккаунты кошельков обходятся гораздо дороже по сравнению с EOA.

TON

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

Поскольку кошельки являются смарт-контрактами, у пользователей может быть много кошельков с разными адресами и исходными параметрами. Чтобы отправить транзакцию, пользователь должен подписать сообщение своим приватным ключом и отправить его контракту своего кошелька, который перенаправляет его дальше смарт-контракту конкретного dApp-приложения. Такой подход резко увеличивает гибкость в проектировании кошельков, а разработчики могут добавлять новые версии кошельков в будущем.

Транзакции

Ethereum

Вспомним, что в Ethereum транзакции — это криптографически подписанные инструкции от аккаунтов. Аккаунт инициирует транзакцию, чтобы обновить состояние сети Ethereum. Самая простая транзакция — отправка ETH одним аккаунтом другому.

Транзакция по шагам

  1. Криптографически генерируется хэш транзакции: 0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
  2. Затем транзакцию отправляют в сеть и добавляют в пул, состоящий из всех остальных текущих транзакций в сети.
  3. Валидатор должен выбрать вашу транзакцию и включить её в блок, чтобы она была верифицирована и могла считаться успешной.
  4. Со временем блок с вашей транзакцией получит статус justified и затем finalized. Это гарантирует, что ваша транзакция оказалась успешна и далее уже никогда не будет видоизменена. После финализации блока он может быть изменён только атакой на всю сеть, которая обошлась бы во много миллиардов долларов.

TON

В TON та сущность, которая переносит данные между двумя контрактами, называется сообщением. Например, сообщение может содержать произвольные данные о переносе токена на конкретный адрес. Когда сообщение достигает контракта, он обрабатывает его в соответствии со своим кодом. Контракт обновляет своё состояние и при необходимости отправляет новое сообщение. Транзакция — это весь поток от получения сообщений до выполнения действий аккаунтом.

Для примера рассмотрим взаимодействие аккаунтов, где сообщения от контракта A отправляются контракту B. В этом случае у нас есть одно сообщение и две транзакции.

Но изначально для изменения состояния блокчейна нужен внешний сигнал. Чтобы запустить смарт-контракт, нужно отправить валидаторам сообщение извне блокчейна, и они применят его к смарт-контракту.

Как мы уже говорили, кошелёк — это тоже смарт-контракт, и внешнее сообщение обычно сначала отправляется этому контракту. Так возникает первая транзакция, и она обычно содержит вложенное сообщение другому контракту — основному адресату.

Когда смарт-контракт кошелька получает сообщение, он обрабатывает его и доставляет контракту-адресату. В нашем случае примере контракт А может быть кошельком; когда он получает внешнее сообщение, возникает первая транзакция.

Мы можем рассматривать последовательность транзакций как «цепочку» (chain). В таком представлении у каждого смарт-контракта есть связанные с ним транзакции, то есть свой собственный «чейн», и сеть может обрабатывать разные транзакции независимо.

к сведению

Вы можете узнать больше об этом здесь.

Газ

Ethereum

В Ethereum пользователи оплачивают комиссии в основной валюте блокчейна — ether (ETH). Обычно расценки на газ указаны в gwei. Gwei — это обозначение для миллиардной доли ETH.

Например, 0,000000001 ether составляют 1 gwei.

Стоимость газа делится на базовую плату, установленную протоколом, и приоритетную плату, которую пользователь добавляет, чтобы ускорить обработку транзакций валидаторами.

Суммарная общая комиссия составляет:

total fee = units of gas used * (base fee + priority fee).

Кроме того, хранение данных на Ethereum по сути бесплатное: после того, как пользователь сохранил данные в блокчейне, ему больше не требуется платить за их содержание.

TON

Контракт указывает все вычислительные затраты в единицах газа и фиксирует их в конкретном объёме газа. Конфигурация блокчейна определяет стоимость газа, и за него платят в Toncoin.

Конфигурация чейна определяет стоимость единиц газа, и изменить это значение можно только консенсусом валидаторов. Обратите внимание, что в отличие от других систем, здесь пользователь не может сам устанавливать стоимость газа для себя, и нет рынка комиссий. В TON подсчёт комиссий транзакции выглядит сложным образом. Он включает несколько разных типов комиссий:

  • комиссии за хранение смарт-контрактов в блокчейне
  • комиссии за импортирование сообщений в блокчейн
  • комиссии за исполнение кода в виртуальной машине
  • комиссии за обработку действий после выполнения кода
  • комиссии за отправку сообщений вовне блокчейна

Стоимость газа и некоторые другие параметры могут быть изменены голосованием в главной сети. В отличие от Ethereum, в TON пользователи не могут самостоятельно устанавливать цену газа. Также разработчику необходимо вручную вернуть оставшиеся средства на газ владельцу, иначе они останутся заблокированы. Использование хранилища смарт-контрактов также влияет на стоимость: если смарт-контракт кошелька не использовался долго, следующая транзакция будет стоить дороже.

к сведению

Можете прочитать больше про газ.

Архитектура

Ethereum

Ethereum наследует и расширяет фундаментальные принципы Bitcoin. Этот подход даёт разработчикам гибкость для создания сложных dApps. В Ethereum есть особенная функциональность: способность предоставить каждому аккаунту индивидуальное хранилище данных, позволяя транзакциям производить пересылку токенов и менять состояние блокчейна с помощью взаимодействия со смарт-контрактами. Как вы знаете, возможность аккаунтов синхронно взаимодействовать многое даёт разработке приложений, но также вызывает сложности с масштабируемостью. Каждая транзакция в сети Ethereum требует у нод обновить и поддерживать всё состояние блокчейна, что приводит к значительным задержкам и повышает стоимость газа в сети при росте её использования.

TON

TON предлагает альтернативный подход для улучшения масштабирования и производительности. Чтобы предоставить разработчикам максимум гибкости при создании различных приложений, TON использует концепцию шардов и мастерчейна для оптимизации процесса создания блоков. Каждый шардчейн в TON и мастерчейн генерируют новый блок в среднем каждые три секунды, обеспечивая быстрое исполнение транзакций. В отличие от Ethereum, где обновления состояния происходят синхронно, TON использует асинхронный обмен сообщениями между смарт-контрактами, позволяя обрабатывать транзакции независимо и параллельно, существенно ускоряя обработку транзакций в сети. Можете ознакомиться со следующими страницами:

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

См. также

Was this article useful?