SUI – ДЕТАЛЬНО
Я прочел документацию Sui, поэтому вам не нужно.
Детальный разбор не техническими словами.
ОПРЕДЕЛЕНИЕ
Sui – это proof-of-stake блокчейн 1 уровня, написанный на языке Rust и поддерживающий смарт-контракты на языке программирования Move.
Вы должны были слышать о Rust, как об одном из наиболее используемых языков (Solana, Polkadot, Near). Move, в свою очередь, что-то новенькое для большинства читателей. Нынешние блокчейны используют язык Solidity для создание смарт-контрактов. Sui же один из первых, кто внедряет Move. Поговорим детальней о языках программирования в следующей части. Давайте остановимся сначала на Sui.
СТРУКТУРА
Концепт proof-of stake подразумевает валидаторов, которые стейкают токены $SUI, чтоб проверять транзакции – подобным образом, как и в других блокчейнах. Но с несколькими важными отличиями:
Прежде чем продолжим. Если такие термины, как валидаторы, стейкинг или Byzantine Fault Tolerance (BFT) не совсем понятны, ознакомьтесь с моей предыдущей статьей, чтоб хорошенько подготовить себя.
Sui не объединяет транзакции в блоки. Валидаторы проверяют транзакции параллельно, что значительно увеличивает пропускную способность. Это возможно благодаря тому, что пользователь может отправить только одну транзакцию за раз. Следующую только после подтверждения первой.
Вторая причина – разница в исполнении между простыми транзакциями и более сложными, где задействовано множество сторон (различные смарт-контракты). Это называется owned objects и shared objects.
Но почему объекты? Базовая единица хранения в Sui – объект. Им может владеть аккаунт или другой объект. Каждый объект имеет:
- Уникальный ID (что-то на подобии хэша или контракта в Ethereum);
- Версию (показывающую сколько раз объект включался в транзакцию, начиная с 1);
- Transaction digest (указывающий последнюю транзакцию, которая включала объект на вывод);
- Owner field (указывает владельца: адрес аккаунта, другой объект, неизменный или общий).
У каждого owned object есть единственный владелец (адрес), и каждый адрес может иметь неограниченное кол-во объектов. Однако, shared object могут иметь нескольких владельцев. Данные в блокчейне (ledger) обновляются через транзакции. Транзакция может создать, разрушить или записать объект, так же как и переместить его на другой адрес.
Надеюсь вся эта история с объектами не вызвала у вас замешательство. Это всего лишь другой способ представления данных в блокчейне. Мы привыкли фокусироваться на аккаунтах/кошельках, в то время как Sui фокусируется на объектах.
CONSENSUS
В Sui, согласование (consensus) требуется, только когда транзакции включают shared objects. Короче говоря – Sui хорошо оптимизирован для простых транзакций. Как упоминалось, транзакции не объединяются в блоки, а взаимодействуют с валидаторами напрямую с помощью упрощенных алгоритмов. Благодаря этому достигается практически мгновенная проверка и подтверждение простым транзакциям. Более того, к простым транзакция (owned objects) относятся не только обычные переводы, но и хранение пользовательских данных, сообщения в web3 социальных сетях, игры против компьютера, голосования и даже больше!
- Отправитель транслирует транзакцию всем валидаторам Sui;
- Каждый валидатор отвечает голосованием по данной транзакции. Каждый голос имеет определенный вес на основании кол-ва монет в стейке валидатора;
- Отправитель получает большинство Byzantine-resistant голосов, объединяет их в сертификат (совокупность подписей валидаторов) и отправляет обратно всем валидаторам. Это заканчивает транзакцию, подтверждая, что она не будет отменена.
Однако, когда участвуют shared objects, отправка транзакции происходит таким образом:
- Отправитель транслирует транзакцию всем валидаторам Sui;
- Каждый валидатор отвечает голосованием по данной транзакции. Каждый голос имеет определенный вес на основании кол-ва монет в стейке валидатора;
- Отправитель получает большинство Byzantine-resistant голосов, объединяет их в сертификат и отправляет обратно всем валидаторам. Теперь же в сертификате должна установиться последовательность через Byzantine Agreement (валидаторы должны прийти к согласованию);
- Как только транзакция упорядочена, пользователь транслируется новый сертификат валидаторам, чтоб окончить и утвердить транзакцию.
Алгоритмы выше показывают, что простые транзакции могут обходить согласование и исполняться мгновенно.
SCALABILITY
Sui способен расширяться горизонтально без нужды в шардах (как Ethereum или Near). Емкость сети растет вместе с увеличением вычислительных мощностей у валидаторов, что вытекает в низкие комиссии даже при большой загруженности сети. Простыми словами – чем более мощное железо используют валидаторы, тем более масштабируемая сеть Sui. В основном учитывается кол-во ядер процессора.
Это, в теории, решает ряд проблем:
- Игры на базе блокчейна медленные и дорогие;
- Большой трафик подразумевает большие комиссии или медленные транзакции;
- Gas wars;
- Остановка сети из-за экстремальных нагрузок.
MOVE vs. SOLIDITY
Довольно тяжело говорить о языках программирования в не техническом формате. Поэтому сконцентрируемся только на явных и простых моментах.
Первое – Move поддерживает не только смарт-контракты, как Solidity, но и настраиваемые транзакции (custom transactions). Это делает Move более гибким для разработчиков.
Второе – Move создавался для решения вопросов безопасности с помощью ограниченности (scarcity) и доступности (access control). Ограниченность предотвращает любые двойные траты и вводит ограничение на создание активов. Доступность занимается вопросами владения и полномочий (кто чем владеет и что может совершать). Другими словами – безопасность и контроль установлены на уровне кода в Move.
Третье – Move использует модули при создании и работе со смарт-контрактами. Это делает внедрение и оптимизацию более легкими. Как только вы обновляете модуль, все контракты, использующие этот модуль, начинают использовать его последнюю версию.
ПОСЛЕСЛОВИЕ
Много технических нюансов еще можно обсудить. Однако, это уже вне формата данной статьи. Надеюсь мне удалось сформировать общее представление о работе блокчейна Sui. Рекомендую также ознакомиться со статьями, которые указал в начале, попробовать запустить ноду Sui и принимать участие в дальнейших мероприятиях внутри их сообщества. Первая волна оплачиваемого тестнета уже завершена, однако будут и другие. Как говорится, be early – be smart.
Вступаем в сообщества Sui в discord и twitter.
Ну а если вам статья показалась полезной и интересной, вы знаете что делать ;)