<aside> 💧 У Sui розробники пишуть смарт-контракти за допомогою мови програмування Move. Ця сторінка містить посилання на ключові ресурси Move і порівнює мови програмування Move і Solidity.
</aside>
👥 Приєднуйся до україномовного чату та будь в курсі останніх новин.
Наразі основним гравцем на сцені блокчейн-мов є Solidity. Будучи однією з перших мов блокчейну, Solidity була розроблена для реалізації базових концепцій мови програмування з використанням добре відомих типів даних (наприклад, масив байтів, рядок) і структур даних (таких як хеш-карти) з можливістю створення призначених для користувача абстракцій за допомогою відомої бази.
<aside> 📎 Однак у міру розвитку блокчейн-технології стало зрозуміло, що основне призначення мов блокчейну — це операції з цифровими активами, а головною якістю таких мов є безпека та можливість перевірки (що є додатковим рівнем безпеки).
</aside>
Move був спеціально розроблений для вирішення обох проблем — забезпечення захисту цифрових активів та безпечних операцій із ними. Щоб забезпечити додатковий захист, його було розроблено спільно з інструментом перевірки Move Prover. Це дозволяє розробникам Move писати формальні специфікації для ключових властивостей коректності своєї програми, а потім використовувати перевірку, щоб визначити, чи ці властивості зберігатимуться для всіх можливих транзакцій і вхідних даних.
Однією з фундаментальних відмінностей між EVM і Move є модель даних для активів:
owner_address -> <bytes encoding asset>
хеш-картах. Оновлення та передача активів відбувається шляхом оновлення записів на цій карті. Немає типу чи значення, що представляє актив, і, отже, актив не можна передати як аргумент, повернути з функції або зберегти всередині іншого активу. Лише неструктуровані байти можуть бути передані через межі контракту, і, отже, кожен актив назавжди залишається всередині контракту, який його визначає.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>