Самовдосконалення веб3-розробника — мова смартконтрактів
Основне введення
Смартконтракти є автоматизованими виконуваними протоколами, які працюють на блокчейн-платформах, що дозволяє сторонам контракту здійснювати надійні угоди без посередників або довірених третіх осіб, ці угоди можуть бути відслідковані та незворотні. Смартконтракти містять код функцій та можуть взаємодіяти з іншими контрактами, коли попередньо визначені умови виконуються, смартконтракт автоматично виконує код функцій, зазначених у контракті.
Концепція смартконтрактів була вперше запропонована комп'ютерним вченим Ніком Сабо в 90-х роках минулого століття, але лише з появою блокчейну Ethereum смартконтракти почали широко використовуватися. Ethereum був запущений у 2015 році, підтримуючи розгортання та виконання смартконтрактів. На відміну від Bitcoin, який в основному використовується для простих транзакцій з криптовалютою, Ethereum дозволяє створювати децентралізовані додатки за допомогою його мов програмування з Turing-повнотою, тому його вважають блокчейном другого покоління.
Мова смартконтрактів — це мова програмування, яка використовується для написання смартконтрактів, компілюється в байт-код і виконується на віртуальній машині платформи смартконтрактів блокчейну, реалізуючи код запланованої логіки. Мова смартконтрактів повинна дозволяти розробникам безпечно та ефективно виражати правила контракту та зазвичай надає набір інструментів і абстракцій для обробки транзакцій та стану блокчейну.
смартконтракти мови
Більшість розробників смартконтрактів працює на Ethereum та сумісних з EVM блокчейнах, тоді як Solana є блокчейн-екосистемою, в якій найбільша кількість розробників не є сумісною з EVM, а Move була створена спеціально для безпечної розробки смартконтрактів для блокчейнів.
Хоча існує багато інших публічних блокчейнів, які мають спеціалізовані смартконтракти, такі як TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo тощо, але це занадто фрагментовано.
Тому в цій статті мова смартконтрактів буде класифікована за системами EVM, Solana та Move.
система EVM
EVM є ядром Ethereum, відповідальним за виконання смартконтрактів та обробку транзакцій. Протокол Ethereum визначає байт-код, що працює на EVM, і на його основі було побудовано проміжну мову Yul та Yul+, а на базі проміжної мови знову побудовано такі високорівневі мови, як Solidity/Vyper/Fe, що спрощує розробку смартконтрактів для фронтенд-користувачів. Перевага багаторівневої архітектури полягає в тому, що проміжна мова підходить як для перекладу в машинну мову, так і для повної оптимізації програми, що полегшує ручну перевірку, проведення формальної верифікації та інші перевірки, але чим більше рівнів, тим вища вартість забезпечення доказової надійності, оскільки кожен рівень потребує відповідної верифікації, звичайно, нижчі мови через свою простоту мають нижчі витрати на верифікацію.
На Ethereum та сумісних з EVM блокчейнах розробники можуть використовувати різні високорівневі мови програмування, наразі найпопулярнішими та найкраще підтримуваними мовами є Solidity та Vyper, а також можна вибрати Yul, Yul+, Fe та Huff.
Solidity вперше був запропонований CTO Ethereum Гевіном Вудом у 2014 році, а пізніше був переданий на розробку команді Ethereum під керівництвом Крістіана Рейтвісснера. Solidity, як об’єктно-орієнтована мова програмування, сильно під впливом C++, Python та JavaScript, і спеціально розроблена для EVM. Щоб забезпечити повторне використання коду, смартконтракти розглядаються як об’єкти класу, використовуючи множинне успадкування. Особливо, Solidity визначає стандарт інтерфейсу двійкових додатків (ABI) для взаємодії з його контрактами. Наразі, ABI Solidity вважається фактичним стандартом EVM DSL.
Vyper була розроблена командою одного з засновників Ethereum Віталіка Бутеріна як альтернативний вибір до Solidity і була випущена в 2017 році. Vyper є мовою програмування, схожою на Python, яка орієнтована на контракти і призначена для EVM. Vyper оптимізована для безпеки, читабельності, можливості аудиту та ефективності Gas. Vyper не використовує об'єктно-орієнтовану модель і не дозволяє використовувати вбудовану асемблерну мову.
Yul є мовою асемблера з розвиненими контролями потоку та великою кількістю абстракцій, яка є частиною інструментального набору Solidity. Більшість функцій у Yul відкриваються через блоки інлайн-асемблера в Solidity, що дозволяє використовувати функції, які не підтримуються Solidity, а також налаштовувати зберігання, пам'ять та calldata. Yul+ є розширенням Yul, яке можна вважати експериментальним оновленням Yul.
Fe є мовою високого рівня, подібною до Rust, випущеною в січні 2021 року. Fe не використовує об'єктно-орієнтовану модель, а натомість повторно використовує код через модульну систему, оголошуючи змінні, типи та функції в межах модуля, які можна імпортувати подібно до Rust.
Huff є мовою асемблера, що має ручний контроль стеку та мінімальну абстракцію над інструкціями EVM. За допомогою інструкції «#include» під час компіляції можна розібрати будь-які включені файли Huff, що дозволяє повторно використовувати код.
На Ethereum більшість смартконтрактів розроблені на основі Solidity, приблизно 90%, що в десять разів більше, ніж у Vyper, який зайняв друге місце. Оскільки Fee з'явився пізніше, розробників, які його використовують, мало. Yul і Yul+ зазвичай використовуються як вбудовані блоки асемблера для Solidity, що дозволяє отримати низькорівневий доступ до набору інструкцій EVM, зазвичай для оптимізації Gas. Huff є ще нижчим рівнем, що дозволяє вручну маніпулювати стеком і викликати інструкції EVM, зазвичай для оптимізації граничного Gas.
Відділ Solana
Solana відома завдяки своєму механізму PoH (Proof of History) та низькій затримці з високою пропускною спроможністю, є одним з найвідоміших "вбивць Ethereum". Solana також є однією з найбільш швидко зростаючих публічних блокчейнів за ринковою капіталізацією та розвитком екосистеми за останній рік, що сприяло значному зростанню її спільноти розробників.
Solana називає смартконтракти програмами (Program) на ланцюзі, які в основному написані мовою Rust, але на відміну від інших публічних блокчейнів, що використовують мову Rust, Solana не використовує WASM runtime. Solana має свою унікальну віртуальну машину SVM та байт-код SBF.
SVM є runtime для запуску смартконтрактів та обробки транзакцій у мережі Solana, ключовим компонентом є Sealevel. Sealevel реалізує паралельну обробку в Solana runtime, дозволяючи кільком смартконтрактам одночасно виконуватись, не впливаючи на продуктивність один одного. Смартконтракти Solana визначають, які стани (рахунки) будуть прочитані або записані під час виконання, що дозволяє безконфліктним транзакціям виконуватись паралельно, забезпечуючи при цьому узгодженість даних.
SBF базується на eBPF, попереднику BPF (Berkeley Packet Filter, Берклійський фільтр пакетів), який спочатку використовувався для ефективної фільтрації мережевих пакетів. eBPF надає більш багатий набір інструкцій, що дозволяє вносити динамічні зміни та змінювати поведінку ядра операційної системи без зміни вихідного коду, має високу продуктивність, безпеку та портативність. SBF, на відміну від eBPF, використовує власний валідатор, який не лише перевіряє, чи потрібно програмі завершитися за певну кількість інструкцій (тобто відоме питання зупинки), але й перевіряє, чи є інструкції правильними та чи є виходи за межі. Окрім валідатора, також вирішуються деякі деталі eBPF, що викликають певні проблеми при компіляції смартконтрактів.
LLVM (Low Level Virtual Machine) є сучасною компіляційною архітектурою та інструментальним набором, компілятор може перекладати Rust у проміжну мову LLVM IR, а потім LLVM IR використовує бекенд для перекладу в цільову платформу eBPF. Теоретично, будь-яка мова програмування, яка підтримує компіляцію в LLVM IR, може бути використана для написання смартконтрактів Solana, проте на практиці Solana Labs внесла кілька змін до Rust та eBPF LLVM бекенду, деякі з цих змін за своєю суттю не доступні в upstream (Rust та LLVM). Розробка контрактів Solana наразі підтримує лише Rust та Solang.
Rust розробляється Mozilla і був випущений у 2011 році, за синтаксисом схожий на C++, є універсальною статично компільованою мовою, що призначена для продуктивності та безпеки, особливо безпеки, і не обмежується програмами смартконтрактів. У порівнянні з Solidity, Rust є низькорівневою (low-level), багатопарадигмальною мовою програмування, що забезпечує високу продуктивність та безпечність пам'яті. Офіційний компілятор Rust - rustc, rustc виконує лексичний аналіз, синтаксичний аналіз, семантичний аналіз вихідного коду Rust, врешті-решт компілюючи код в LLVM IR.
Solang розроблений компанією Hyperlege Labs, був випущений у 2023 році, є компілятором Solidity на основі архітектури LLVM для Solana та Polkadot, який підтримує написання смартконтрактів за допомогою Solidity, але реальний синтаксис зазнав деяких змін, щоб узгоджуватися з архітектурою Solana та Polkadot. Мета Solang полягає в спрощенні переходу розробників до Solana або Polkadot та розширенні можливостей розробки Solidity.
Rust є основною мовою, яку офіційно підтримує Solana, має вищу стабільність; основна перевага Solang полягає в його сумісності з мовою Solidity.
Система переїзду
Move є новою мовою програмування смартконтрактів, яка була запущена в 2019 році і спочатку була розроблена для блокчейн-проекту Diem від Meta. Move має на меті вирішити проблеми безпеки активів і транзакцій, дозволяючи чітко визначати та контролювати активи і транзакції, а її мовні особливості такі:
Захист ресурсів першого класу (Frist Class Resources): ресурс першого класу спочатку є типом змінної, а потім визначає, що змінні цього типу: не можуть бути скопійовані; не можуть бути неявно знищені; можуть бути "переміщені" лише на різних адресах програм.
Гнучкість: Байткод Move може виконуватись безпосередньо або викликати код інших опублікованих модулів, дозволяючи викликати кілька програм в одній транзакції, що робить можливим гнучке здійснення переказів кільком особам в одній транзакції;
Безпека, верифікація: Система коду Move забезпечує цілеспрямовану безпеку для ресурсів. Ресурси Move не можуть бути скопійовані, повторно використані або знищені. Тип ресурсу може бути створений або знищений лише модулем, що визначає його тип. Віртуальна машина Move перевірятиме статичний байтовий код і відмовить у виконанні програм, які не пройшли перевірку байтового коду, щоб забезпечити їх безпеку.
Після розпуску проєкту Diem його засновницька команда, що пішла, заснувала Aptos та Sui, також обравши Move як основну мову смартконтрактів. Aptos успадкувала Diem Move (Core Move), тоді як Sui використовує свою власну кастомізовану версію Sui Move для написання своїх смартконтрактів.
У Move кожен смартконтракт є модулем, що складається з визначень функцій і структур, які інстанціюються в функціях і можуть передаватися до інших модулів через виклики функцій. Sui Move, на відміну від Core Move, використовує об'єктну модель даних, в якій існує три різні типи об'єктів: об'єкти-власники, спільні об'єкти та незмінні об'єкти. Стратегія паралелізації Sui подібна до Solana, транзакції також повинні вказувати, які об'єкти будуть оброблятися, що дозволяє Sui ефективно обробляти паралельні транзакції без глобальної сортування, необхідної для традиційних блокчейнів.
Компилятор, валідатор та віртуальна машина Move були розроблені з нуля. Серед них валідатор є однією з основних механізмів безпеки Move, що підтримує програмну модель, орієнтовану на ресурси. Валідатор Move є інструментом статичного аналізу, який аналізує байт-код Move і визначає, чи дотримуються необхідні правила безпеки типів, пам'яті та ресурсів, усі модулі, завантажені в ланцюг, повинні пройти через валідатор.
У порівнянні з такими мовами, як Solidity, Move є мовою, дружньою до формальної перевірки, наприклад, не підтримує такі характеристики, як динамічне призначення (dynamic dispatch), всі шляхи контракту можуть бути визначені на етапі компіляції, без необхідності визначати функцію, яку потрібно виконати, під час виконання контракту, що дозволяє повністю аналізувати та перевіряти.
Move має ще один інструмент формальної верифікації для смартконтрактів, який називається Move Prover. Розробники повинні писати умови верифікації для смартконтрактів (у формі тверджень), Move Prover у фоновому режимі перетворює ці умови верифікації на SMT-формули, а потім використовує SMT-розв'язувач для перевірки.
смартконтракти розробки інструментів
Для тих, хто хоче почати з Web3 або вивчити розробку контрактів на Ethereum та інших блокчейнах, сумісних з EVM, Solidity є беззаперечним вибором. І завдяки популярності Solidity, інструменти для розробки стали більш зрілими, зокрема:
Hardhat є середовищем розробки для компіляції, розгортання, тестування та налагодження Ethereum-додатків. Воно допомагає розробникам керувати та автоматизувати повторювані завдання, що виникають під час створення смартконтрактів та DApps, і легко інтегрувати більше функцій в цей робочий процес;
OpenZeppelin надає відкритий код OpenZeppelin Contracts, написаний на Solidity, для створення безпечних смартконтрактів. OpenZeppelin Contracts дозволяє
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
12 лайків
Нагородити
12
3
Поділіться
Прокоментувати
0/400
ApeWithNoFear
· 19год тому
смартконтракти搞不定 这可咋混!
Переглянути оригіналвідповісти на0
ImpermanentLossFan
· 19год тому
смартконтракти бик p个毛...насправді це просто кодовий блок
Переглянути оригіналвідповісти на0
0xOverleveraged
· 19год тому
Не грайте в монети, торгуйте лише ф'ючерсами, високий важіль робить це цікавим.
Обов'язковий курс для розробників Web3: всебічний аналіз мов смартконтрактів
Самовдосконалення веб3-розробника — мова смартконтрактів
Основне введення
Смартконтракти є автоматизованими виконуваними протоколами, які працюють на блокчейн-платформах, що дозволяє сторонам контракту здійснювати надійні угоди без посередників або довірених третіх осіб, ці угоди можуть бути відслідковані та незворотні. Смартконтракти містять код функцій та можуть взаємодіяти з іншими контрактами, коли попередньо визначені умови виконуються, смартконтракт автоматично виконує код функцій, зазначених у контракті.
Концепція смартконтрактів була вперше запропонована комп'ютерним вченим Ніком Сабо в 90-х роках минулого століття, але лише з появою блокчейну Ethereum смартконтракти почали широко використовуватися. Ethereum був запущений у 2015 році, підтримуючи розгортання та виконання смартконтрактів. На відміну від Bitcoin, який в основному використовується для простих транзакцій з криптовалютою, Ethereum дозволяє створювати децентралізовані додатки за допомогою його мов програмування з Turing-повнотою, тому його вважають блокчейном другого покоління.
Мова смартконтрактів — це мова програмування, яка використовується для написання смартконтрактів, компілюється в байт-код і виконується на віртуальній машині платформи смартконтрактів блокчейну, реалізуючи код запланованої логіки. Мова смартконтрактів повинна дозволяти розробникам безпечно та ефективно виражати правила контракту та зазвичай надає набір інструментів і абстракцій для обробки транзакцій та стану блокчейну.
смартконтракти мови
Більшість розробників смартконтрактів працює на Ethereum та сумісних з EVM блокчейнах, тоді як Solana є блокчейн-екосистемою, в якій найбільша кількість розробників не є сумісною з EVM, а Move була створена спеціально для безпечної розробки смартконтрактів для блокчейнів.
Хоча існує багато інших публічних блокчейнів, які мають спеціалізовані смартконтракти, такі як TON/FunC, Cardano/Plutus, ICP/Motoko, Flow/Cadence, Starknet/Cairo тощо, але це занадто фрагментовано.
Тому в цій статті мова смартконтрактів буде класифікована за системами EVM, Solana та Move.
система EVM
EVM є ядром Ethereum, відповідальним за виконання смартконтрактів та обробку транзакцій. Протокол Ethereum визначає байт-код, що працює на EVM, і на його основі було побудовано проміжну мову Yul та Yul+, а на базі проміжної мови знову побудовано такі високорівневі мови, як Solidity/Vyper/Fe, що спрощує розробку смартконтрактів для фронтенд-користувачів. Перевага багаторівневої архітектури полягає в тому, що проміжна мова підходить як для перекладу в машинну мову, так і для повної оптимізації програми, що полегшує ручну перевірку, проведення формальної верифікації та інші перевірки, але чим більше рівнів, тим вища вартість забезпечення доказової надійності, оскільки кожен рівень потребує відповідної верифікації, звичайно, нижчі мови через свою простоту мають нижчі витрати на верифікацію.
На Ethereum та сумісних з EVM блокчейнах розробники можуть використовувати різні високорівневі мови програмування, наразі найпопулярнішими та найкраще підтримуваними мовами є Solidity та Vyper, а також можна вибрати Yul, Yul+, Fe та Huff.
Solidity вперше був запропонований CTO Ethereum Гевіном Вудом у 2014 році, а пізніше був переданий на розробку команді Ethereum під керівництвом Крістіана Рейтвісснера. Solidity, як об’єктно-орієнтована мова програмування, сильно під впливом C++, Python та JavaScript, і спеціально розроблена для EVM. Щоб забезпечити повторне використання коду, смартконтракти розглядаються як об’єкти класу, використовуючи множинне успадкування. Особливо, Solidity визначає стандарт інтерфейсу двійкових додатків (ABI) для взаємодії з його контрактами. Наразі, ABI Solidity вважається фактичним стандартом EVM DSL.
Vyper була розроблена командою одного з засновників Ethereum Віталіка Бутеріна як альтернативний вибір до Solidity і була випущена в 2017 році. Vyper є мовою програмування, схожою на Python, яка орієнтована на контракти і призначена для EVM. Vyper оптимізована для безпеки, читабельності, можливості аудиту та ефективності Gas. Vyper не використовує об'єктно-орієнтовану модель і не дозволяє використовувати вбудовану асемблерну мову.
Yul є мовою асемблера з розвиненими контролями потоку та великою кількістю абстракцій, яка є частиною інструментального набору Solidity. Більшість функцій у Yul відкриваються через блоки інлайн-асемблера в Solidity, що дозволяє використовувати функції, які не підтримуються Solidity, а також налаштовувати зберігання, пам'ять та calldata. Yul+ є розширенням Yul, яке можна вважати експериментальним оновленням Yul.
Fe є мовою високого рівня, подібною до Rust, випущеною в січні 2021 року. Fe не використовує об'єктно-орієнтовану модель, а натомість повторно використовує код через модульну систему, оголошуючи змінні, типи та функції в межах модуля, які можна імпортувати подібно до Rust.
Huff є мовою асемблера, що має ручний контроль стеку та мінімальну абстракцію над інструкціями EVM. За допомогою інструкції «#include» під час компіляції можна розібрати будь-які включені файли Huff, що дозволяє повторно використовувати код.
На Ethereum більшість смартконтрактів розроблені на основі Solidity, приблизно 90%, що в десять разів більше, ніж у Vyper, який зайняв друге місце. Оскільки Fee з'явився пізніше, розробників, які його використовують, мало. Yul і Yul+ зазвичай використовуються як вбудовані блоки асемблера для Solidity, що дозволяє отримати низькорівневий доступ до набору інструкцій EVM, зазвичай для оптимізації Gas. Huff є ще нижчим рівнем, що дозволяє вручну маніпулювати стеком і викликати інструкції EVM, зазвичай для оптимізації граничного Gas.
Відділ Solana
Solana відома завдяки своєму механізму PoH (Proof of History) та низькій затримці з високою пропускною спроможністю, є одним з найвідоміших "вбивць Ethereum". Solana також є однією з найбільш швидко зростаючих публічних блокчейнів за ринковою капіталізацією та розвитком екосистеми за останній рік, що сприяло значному зростанню її спільноти розробників.
Solana називає смартконтракти програмами (Program) на ланцюзі, які в основному написані мовою Rust, але на відміну від інших публічних блокчейнів, що використовують мову Rust, Solana не використовує WASM runtime. Solana має свою унікальну віртуальну машину SVM та байт-код SBF.
SVM є runtime для запуску смартконтрактів та обробки транзакцій у мережі Solana, ключовим компонентом є Sealevel. Sealevel реалізує паралельну обробку в Solana runtime, дозволяючи кільком смартконтрактам одночасно виконуватись, не впливаючи на продуктивність один одного. Смартконтракти Solana визначають, які стани (рахунки) будуть прочитані або записані під час виконання, що дозволяє безконфліктним транзакціям виконуватись паралельно, забезпечуючи при цьому узгодженість даних.
SBF базується на eBPF, попереднику BPF (Berkeley Packet Filter, Берклійський фільтр пакетів), який спочатку використовувався для ефективної фільтрації мережевих пакетів. eBPF надає більш багатий набір інструкцій, що дозволяє вносити динамічні зміни та змінювати поведінку ядра операційної системи без зміни вихідного коду, має високу продуктивність, безпеку та портативність. SBF, на відміну від eBPF, використовує власний валідатор, який не лише перевіряє, чи потрібно програмі завершитися за певну кількість інструкцій (тобто відоме питання зупинки), але й перевіряє, чи є інструкції правильними та чи є виходи за межі. Окрім валідатора, також вирішуються деякі деталі eBPF, що викликають певні проблеми при компіляції смартконтрактів.
LLVM (Low Level Virtual Machine) є сучасною компіляційною архітектурою та інструментальним набором, компілятор може перекладати Rust у проміжну мову LLVM IR, а потім LLVM IR використовує бекенд для перекладу в цільову платформу eBPF. Теоретично, будь-яка мова програмування, яка підтримує компіляцію в LLVM IR, може бути використана для написання смартконтрактів Solana, проте на практиці Solana Labs внесла кілька змін до Rust та eBPF LLVM бекенду, деякі з цих змін за своєю суттю не доступні в upstream (Rust та LLVM). Розробка контрактів Solana наразі підтримує лише Rust та Solang.
Rust розробляється Mozilla і був випущений у 2011 році, за синтаксисом схожий на C++, є універсальною статично компільованою мовою, що призначена для продуктивності та безпеки, особливо безпеки, і не обмежується програмами смартконтрактів. У порівнянні з Solidity, Rust є низькорівневою (low-level), багатопарадигмальною мовою програмування, що забезпечує високу продуктивність та безпечність пам'яті. Офіційний компілятор Rust - rustc, rustc виконує лексичний аналіз, синтаксичний аналіз, семантичний аналіз вихідного коду Rust, врешті-решт компілюючи код в LLVM IR.
Solang розроблений компанією Hyperlege Labs, був випущений у 2023 році, є компілятором Solidity на основі архітектури LLVM для Solana та Polkadot, який підтримує написання смартконтрактів за допомогою Solidity, але реальний синтаксис зазнав деяких змін, щоб узгоджуватися з архітектурою Solana та Polkadot. Мета Solang полягає в спрощенні переходу розробників до Solana або Polkadot та розширенні можливостей розробки Solidity.
Rust є основною мовою, яку офіційно підтримує Solana, має вищу стабільність; основна перевага Solang полягає в його сумісності з мовою Solidity.
Система переїзду
Move є новою мовою програмування смартконтрактів, яка була запущена в 2019 році і спочатку була розроблена для блокчейн-проекту Diem від Meta. Move має на меті вирішити проблеми безпеки активів і транзакцій, дозволяючи чітко визначати та контролювати активи і транзакції, а її мовні особливості такі:
Захист ресурсів першого класу (Frist Class Resources): ресурс першого класу спочатку є типом змінної, а потім визначає, що змінні цього типу: не можуть бути скопійовані; не можуть бути неявно знищені; можуть бути "переміщені" лише на різних адресах програм.
Гнучкість: Байткод Move може виконуватись безпосередньо або викликати код інших опублікованих модулів, дозволяючи викликати кілька програм в одній транзакції, що робить можливим гнучке здійснення переказів кільком особам в одній транзакції;
Безпека, верифікація: Система коду Move забезпечує цілеспрямовану безпеку для ресурсів. Ресурси Move не можуть бути скопійовані, повторно використані або знищені. Тип ресурсу може бути створений або знищений лише модулем, що визначає його тип. Віртуальна машина Move перевірятиме статичний байтовий код і відмовить у виконанні програм, які не пройшли перевірку байтового коду, щоб забезпечити їх безпеку.
Після розпуску проєкту Diem його засновницька команда, що пішла, заснувала Aptos та Sui, також обравши Move як основну мову смартконтрактів. Aptos успадкувала Diem Move (Core Move), тоді як Sui використовує свою власну кастомізовану версію Sui Move для написання своїх смартконтрактів.
У Move кожен смартконтракт є модулем, що складається з визначень функцій і структур, які інстанціюються в функціях і можуть передаватися до інших модулів через виклики функцій. Sui Move, на відміну від Core Move, використовує об'єктну модель даних, в якій існує три різні типи об'єктів: об'єкти-власники, спільні об'єкти та незмінні об'єкти. Стратегія паралелізації Sui подібна до Solana, транзакції також повинні вказувати, які об'єкти будуть оброблятися, що дозволяє Sui ефективно обробляти паралельні транзакції без глобальної сортування, необхідної для традиційних блокчейнів.
Компилятор, валідатор та віртуальна машина Move були розроблені з нуля. Серед них валідатор є однією з основних механізмів безпеки Move, що підтримує програмну модель, орієнтовану на ресурси. Валідатор Move є інструментом статичного аналізу, який аналізує байт-код Move і визначає, чи дотримуються необхідні правила безпеки типів, пам'яті та ресурсів, усі модулі, завантажені в ланцюг, повинні пройти через валідатор.
У порівнянні з такими мовами, як Solidity, Move є мовою, дружньою до формальної перевірки, наприклад, не підтримує такі характеристики, як динамічне призначення (dynamic dispatch), всі шляхи контракту можуть бути визначені на етапі компіляції, без необхідності визначати функцію, яку потрібно виконати, під час виконання контракту, що дозволяє повністю аналізувати та перевіряти.
Move має ще один інструмент формальної верифікації для смартконтрактів, який називається Move Prover. Розробники повинні писати умови верифікації для смартконтрактів (у формі тверджень), Move Prover у фоновому режимі перетворює ці умови верифікації на SMT-формули, а потім використовує SMT-розв'язувач для перевірки.
смартконтракти розробки інструментів
Для тих, хто хоче почати з Web3 або вивчити розробку контрактів на Ethereum та інших блокчейнах, сумісних з EVM, Solidity є беззаперечним вибором. І завдяки популярності Solidity, інструменти для розробки стали більш зрілими, зокрема:
Hardhat є середовищем розробки для компіляції, розгортання, тестування та налагодження Ethereum-додатків. Воно допомагає розробникам керувати та автоматизувати повторювані завдання, що виникають під час створення смартконтрактів та DApps, і легко інтегрувати більше функцій в цей робочий процес;
OpenZeppelin надає відкритий код OpenZeppelin Contracts, написаний на Solidity, для створення безпечних смартконтрактів. OpenZeppelin Contracts дозволяє