Чому Move?
Last updated
Last updated
У Sui ви пишете смарт-контракти за допомогою мови програмування Move. Ця сторінка містить посилання на ключові ресурси і порівнює мови програмування і Solidity. Щоб отримати повний опис проблем із традиційними мовами смарт-контрактів, перегляньте Заяву про проблему переміщення.
По-перше, зауважте, що Move базується на добре підтримуваній мові програмування . І Sui Move відрізняється від основного Move тонкими, але чіткими способами. Ось ресурси, щоб покращити Sui Move:
У цьому розділі зібрано посилання на зовнішні ресурси на мові програмування Move. Перегляньте також нашу сторінку «Розумні контракти з Move» і серію навчальних посібників із програмування Move за допомогою об’єктів, щоб дізнатися про ключові ресурси Move на цьому сайті.
подкаст на Zero Knowledge, де детально описані програмовані об’єкти.
Оригінальний написаний членом Sui команди.
документація, включає:
- Покроковий посібник із написання модуля Move.
- Короткий зміст зі сторінками на різні теми.
- Набір зразків, наприклад для визначення монети та її обміну.
- Підсумок ресурсів, пов’язаних із Move, від блокчейнів до зразків коду.
Наразі основним гравцем на сцені блокчейн-мов є Solidity. Будучи однією з перших мов блокчейну, Solidity була розроблена для реалізації базових концепцій мови програмування з використанням добре відомих типів даних (наприклад, масив байтів, рядок) і структур даних (таких як хеш-карти) з можливістю створення користувацьких абстракцій за допомогою добре відомої бази .
Однак у міру розвитку технології блокчейн стало зрозуміло, що основне призначення мов блокчейну — це операції з цифровими активами, а головною якістю таких мов є безпека та можливість перевірки (що є додатковим рівнем безпеки).
Однією з фундаментальних відмінностей між EVM і Move є модель даних для активів:
Активи EVM закодовані як записи в хеш-картах owner_address -> <bytes encoding asset>
. Оновлення та передача активів відбувається шляхом оновлення записів на цій карті. Немає типу чи значення, що представляє актив, і, отже, актив не можна передати як аргумент, повернути з функції або зберегти всередині іншого активу. Лише неструктуровані байти можуть бути передані через межі контракту, і, отже, кожен актив назавжди залишається всередині контракту, який його визначає.
Sui значною мірою використовує модель даних Move для продуктивності. Постійний стан Sui — це набір програмованих об’єктів Move, які можна оновлювати, створювати та знищувати транзакціями. Кожен об’єкт має метадані власності, які дозволяють валідаторам Sui як виконувати, так і фіксувати транзакції з використанням об’єкта паралельно з причинно непов’язаними транзакціями. Система типів Move забезпечує цілісність цих метаданих власності під час виконання. Результатом є система, у якій розробники пишуть звичайні смарт-контракти Move, але валідатори використовують модель даних для максимально ефективного виконання та фіксації транзакцій.
Це просто неможливо з моделлю даних EVM. Оскільки активи зберігаються в динамічно індексованих картах, валідатор не зможе визначити, коли транзакції можуть торкатися того самого активу. Для схеми паралельного виконання та зобов’язань Sui потрібна така мова, як Move with the vokabulary для опису структурованих активів, які можуть вільно перетікати між контрактами. Відверто кажучи: навіть якби ми віддавали перевагу EVM/Solidity, а не Move, ми не могли б використовувати їх у Sui, не пожертвувавши проривом продуктивності, який робить Sui унікальним.
Move був спеціально розроблений для вирішення обох проблем: представлення цифрових активів і безпечних операцій з ними. Щоб забезпечити додатковий захист, його було розроблено спільно з інструментом перевірки . Це дозволяє розробникам Move писати формальні специфікації для ключових властивостей коректності своєї програми, а потім використовувати перевірку, щоб перевірити, чи ці властивості зберігатимуться для всіх можливих транзакцій і вхідних даних.
Переміщення ресурсів є довільними типами, визначеними користувачем. Активи можна передавати як аргументи, повертати з функцій і зберігати в інших ресурсах. Крім того, активи можуть вільно перетинати межі контракту, не втрачаючи своєї цілісності, завдяки вбудованому захисту ресурсів Move .
Однією з головних переваг Move є компонування даних. Завжди можна створити нову структуру (актив) Y, яка буде містити в ній початковий актив X. Більше того – з додаванням генериків можна визначити загальну оболонку Z(T), яка зможе обгортати будь-який актив, надаючи додаткові властивості обгорненому активу або поєднуючи його з іншими. Подивіться, як працює компонування в нашому .