<aside> 💧 У Sui розробники пишуть смарт-контракти за допомогою мови програмування Move. Ця сторінка містить посилання на ключові ресурси Move і порівнює мови програмування Move і Solidity.

</aside>

👥 Приєднуйся до україномовного чату та будь в курсі останніх новин.

Move проти Solidity


Наразі основним гравцем на сцені блокчейн-мов є Solidity. Будучи однією з перших мов блокчейну, Solidity була розроблена для реалізації базових концепцій мови програмування з використанням добре відомих типів даних (наприклад, масив байтів, рядок) і структур даних (таких як хеш-карти) з можливістю створення призначених для користувача абстракцій за допомогою відомої бази.

<aside> 📎 Однак у міру розвитку блокчейн-технології стало зрозуміло, що основне призначення мов блокчейну — це операції з цифровими активами, а головною якістю таких мов є безпека та можливість перевірки (що є додатковим рівнем безпеки).

</aside>

Move був спеціально розроблений для вирішення обох проблем — забезпечення захисту цифрових активів та безпечних операцій із ними. Щоб забезпечити додатковий захист, його було розроблено спільно з інструментом перевірки Move Prover. Це дозволяє розробникам Move писати формальні специфікації для ключових властивостей коректності своєї програми, а потім використовувати перевірку, щоб визначити, чи ці властивості зберігатимуться для всіх можливих транзакцій і вхідних даних.


Однією з фундаментальних відмінностей між EVM і Move є модель даних для активів:

Sui значною мірою використовує модель даних Move для продуктивності. Постійний стан Sui — це набір програмованих об’єктів Move, які можна оновлювати, створювати та знищувати транзакціями. Кожен об’єкт має метадані власності, які дозволяють валідаторам Sui як виконувати, так і фіксувати транзакції з використанням об’єкта паралельно з причинно-непов’язаними транзакціями. Система типів Move забезпечує цілісність цих метаданих власності під час виконання. Результатом є система, у якій розробники пишуть звичайні смарт-контракти Move, але валідатори використовують модель даних для максимально ефективного виконання та фіксації транзакцій.

Це просто неможливо з моделлю даних EVM.

Оскільки активи зберігаються в динамічно індексованих картах, валідатор не зможе визначити, коли транзакції можуть торкатися того самого активу. Для схеми паралельного виконання та зобов’язань Sui потрібна така мова, як Move з правилами для опису структурованих активів, які можуть вільно перетікати між контрактами.

Відверто кажучи: навіть якби ми віддавали перевагу EVM/Solidity, а не Move, ми не могли б використовувати їх у Sui, не пожертвувавши проривом продуктивності, який робить Sui унікальним.

Однією з головних переваг Move є компонування даних. Завжди можна створити нову структуру (актив) Y, яка буде містити в ній початковий актив X. Більше того – з додаванням генериків (generics) можна визначити загальну оболонку Z(T), яка зможе обгортати будь-який актив, надаючи додаткові властивості зеркального активу або поєднуючи його з іншими.

Подивіться, як працює компонування в прикладі Sandwich.


<aside> 🔹 Переклад “Why Move”

</aside>