Разработка Tonscan, часть 1

Разработка Tonscan, часть 1

TON использует акторную модель и имеет асинхронное устройство. Это новшество, в то время как блокчейны предыдущего поколения, такие как Bitcoin, Ethereum, Solana и другие – синхронные.

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

Если мы взаимодействуем с цепочкой смарт-контрактов (например, меняем токены на децентрализованной бирже), то все действия должны выполниться также вместе, в рамках одной транзакции.

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

При переводе монет из одного аккаунта в другой в TON происходит следующее:

  1. Уменьшается баланс отправителя и создается исходящее сообщение к получателю с прикрепленными монетами
  2. Сообщение идёт к получателю
  3. Получатель получает сообщение с монетами, его баланс увеличивается

В переводе происходят две транзакции – в момент отправки (1 пункт) и в момент получения (2 пункт).

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

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

Блокчейн функционирует только по этому правилу. Все смарт-контракты "общаются" друг с другом посредством сообщений.

Это делает возможным параллельное исполнение, а также позволяет автоматически разбивать блокчейн на подблокчейны (шардчейны), чтобы распределить нагрузку. За счет такого устройства TON и может масштабироваться без потери скорости.

Для создателей Tonscan возникла задача – как всё это лучше отобразить для пользователей. С одной стороны пользователи привыкли к существующим эксплорерам и к тому, как там отображены транзакции. Интерфейс etherscan в блокчейне Ethereum стал негласным стандартом для всей индустрии.

Интерфейс etherscan

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

Посмотрев на другие эксплореры в TON, мы не нашли решения, которое было бы нам по душе. Например, эксплорер от Broxus предлагает смотреть на список сообщений и транзакций отдельно, что на наш взгляд неудобно для пользователя. Более того, адрес здесь используется в сыром виде, который не поддерживается приложениями и сервисами TON.


Решение от ton.sh – в истории отображаются сообщения, что позволяет видеть входящие и отправленные монеты, но нет возможности как-либо посмотреть транзакции.

После некоторых дизайн-экспериментов, в Tonscan мы остановились на следующем формате отображения:

В истории отображаются все сообщения, так что виден каждый этап движения монет и это выглядит привычно для пользователя.

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

Нажав иконку слева можно открыть отдельный экран с информацией о конкретной транзакции.

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

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

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

Подписаться
на «Русский TON» в Telegram