(Запрещено создание своих обучающих материалов на основе этого без разрешения автора)

EverScale (далее ES) создан на базе wp и начального кода TON (Telegram Open Network) от Николая Дурова, и, в основном, бч повторяет поведение, описанное в wp: https://ton.org/tblkch.pdf, но актуально не всё, что описано в wp.

Философия Everscale

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

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

И он смог достичь этой цели, и вот как:

Бесконечное шардирование. В EverScale(ES) шарды динамически добавляются с ростом нагрузки, а потом сливаются обратно. Это возможно благодаря тому, что все контракты общаются между собой асинхронно, и поэтому мы можем разделить один шард на два шарда, ничего не поломав. (Просто делим шард пополам, по диапазонам адресов контрактов).

Отказ от радикальной децентрализации. У EverScale(ES) нет цели, чтобы валидатор БЧ мог запустить любой человек на утюге. Количество валидаторов будет измеряться, в лучшем случае, тысячами, а не десятками тысяч. И у валидаторских машин большие требования к серверу и каналу (на данный момент 48 цпу, 128 рам, 1 ТБ) и 1 Гбит канал (сеть очень интенсивно используется). Это позволяет этому блокчейну поддерживать очень высокую скорость выпуска блоков и часто ротировать валидаторов в шардах.

Плата за хранение. И это совершенно гениальное решение и очень смелое решение, которое, вроде бы, не принимал еще ни один блокчейн.

Когда Вы записываете что то в классический БЧ (смотри эфир), Вы записываете туда данные навечно.

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

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

В EverScale(ES) же эта проблема решена очень просто - каждый контракт обязан платить арендную плату за то, что валидаторы хранят его стейт, и когда у контракта кончатся деньги, его удалят. Да, это радикально, но зато пользователям не нужно конкурировать друг с другом за право сделать запись в БЧ навечно - каждый пользователь сам решает, на какое время он хочет записать данные в БЧ, и, если захочет, может потом продлить время хранения данных. Это создаёт совершенно другую токеномику, где данные существуют, сколько надо, или пока кому-то нужны.

По сути, ES целится в децентрализованную замену AWS. Вы можете захостить своё приложение на AWS, или захостить его же в ES, это не будет сильно дороже (а если им редко пользуются, то и дешевле), зато с максимальной отказоустойчивостью.

Блокчейн.

Я не буду рассказывать, как работает блокчейн ES, ибо это не нужно для понимания, как писать смарт-контракты под ES. В ходе туториала мы разберем гарантии, которые даёт БЧ, и которые необходимо знать для написания смарт-контрактов.

Что нужно знать о БЧ? Это мультитредовый БЧ. Есть разные воркчейны (наподобие глобальных шардов, отличаются параметрами, их сейчас 2), внутри воркчейны делятся на “процессинг треды” (типа шарды, просто разные валидаторы исполняют транзы разных смарт-контрактов параллельно, они добавляются динамически с ростом нагрузки, и потом убиваются).

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

Все есть смарт-контракт!

Если в эфириуме у нас адрес - это или адрес контракта, или адрес кошелька, который контролируется приватным ключом и может начинать транзакции, то в ES существуют только контракты, никакого встроенного в БЧ типа контрактов как “Кошелёк” нет. Кошелёк - это просто смарт-контракт, и их много разных. Цепочка транзакций в случае ES может порождаться любым контрактом с помощью external message (если контракт поддерживает прием external message).