Допис
Діліться своїми знаннями.
Освоєння руху в мережі Sui: Повний посібник для початківців та будівельників
Якщо ви займалися розробкою блокчейну, ви, напевно, помітили зростаючий шум щодоSui Networkта її унікальної мови програмування —Move. Це не просто чергова «мова смарт-контракту», яка конкурує за увагу розробників. Move пропонує зовсім інший спосіб мислення про програмування блокчейну - швидкий, безпечний та ідеальний для додатків на основі активів.
У цій публікації ви отримаєте всеосяжне глибоке занурення в Move on Sui**— як це працює, чому воно відрізняється і як ви можете почати на ньому будувати. Ми також вивчимо поширені помилки, найкращі практики та реальні поради щодо успіху.
##1. Що таке Move і чому Sui ним користується?
Move — цемова програмування на основі байткоду, спочатку розроблена компанією Meta (раніше Facebook) для блокчейну Libra/Diem. Sui прийняв Move, але розширив та оптимізував його, щоб відповідати своїйоб'єктно-орієнтованій моделі даних.
За своєю суттю Move призначений для безпечного управління цифровими активами**. Традиційні мови смарт-контрактів, такі як Solidity, розглядають активи як цифри на балансах рахунків, але в Move активи єпершокласними громадяними. Це означає:
- Активине можуть бути випадково дубльовани.
- Активине можуть бути втраченібез явного знищення їх.
- Активиповинні мати чітке володіння.
Ця філософія полегшує міркування про безпеку активів та запобігає поширеним багам та хакам.
Чому Суй обрала Move:
*Безпека: Право власності на активи здійснюється на мовному рівні. *Швидкість: Програми переміщення працюють швидко і уникають зайвих обчислень. *Гнучкість: Ви можете створювати власні типи активів, крім простих токенів. *Паралельне виконання: Архітектура Sui дозволяє Move code обробляти транзакції паралельно, збільшуючи пропускну здатність.
##2. Як працює Move на Sui
У той час як інші блокчейни виконують транзакції послідовно, Sui організовує дані воб'єкти. Кожен об'єкт:
- Маєвласника(може бути користувачем, іншим об'єктом або системою).
- Може бути змінено лише власником або певними функціями переміщення.
- Має унікальний ідентифікатор.
Рух на Суй має три основні концепції:
1.Об'єкти
- Все, що зберігається в ланцюжку, є об'єктом.
- Об'єкти зберігаються та змінюються модулями Move.
- Приклад: монета, NFT, ігровий персонаж.
2.Модулі
- Контейнери для переміщення коду.
- Визначте типи, функції та правила поведінки об'єктів.
3.Транзакції
- Дії, які вживають користувачі.
- Викликати функції Move, передаючи об'єкти, якими вони володіють.
##3. Порівняння переходу до твердості
Особливість | Переміщення (Sui) | Солідність (Ефіріум) |
---|---|---|
Основне фокус | Безпека активів, володіння | Загальна логіка смарт-контрактів |
Модель даних | Об'єктно-орієнтована | На основі облікового запису |
Виконання | Паралелізований (коли об'єкт не конфліктує) | Послідовний |
Безпека типу | Сильно надрукований, ресурси неможливо скопіювати/скинути | Система більш вільного типу |
Безпека | Запобігає подвійним витратам і ненавмисним втратам активів | Поширені проблеми: повторне входження, цілочисельне переповнення |
Якщо ви походите з Solidity, ви помітите, що Move** змушує вас**чітко говорити про поводження з активами. Спочатку це іноді засмучує, але також тому програми Move важче експлуатувати.
##4. Написання модуля першого ходу на Sui
Давайте розглянемо базовий приклад Move: модуль, який створює та передає користувацький маркер.
###Створення токену
module my_project::my_coin {
use sui::coin;
use sui::transfer;
use sui::tx_context::{self, TxContext};
/// Create a new coin type
struct MyCoin has drop, store {}
/// Initialize a new coin and send it to the transaction sender
public entry fun mint(ctx: &mut TxContext) {
let coin = coin::mint<MyCoin>(1000, ctx);
transfer::transfer(coin, tx_context::sender(ctx));
}
}
Пояснення:
struct MyCoin
визначає новий тип монети.mint
Функція створює 1000 одиницьMyCoin
і передає їх відправнику.TxContext
надає доступ до реквізитів транзакції (наприклад, хто її надіслав).
##5. Типи ресурсів Move - секретний соус
Move представляєтипи ресурсів, які єнекопіюваними та недубльованими структурами даних. У повсякденному плані: якщо у вас є купюра 10 доларів, ви не можете просто «скопіювати» її - ви або тримаєте її, або віддаєте. Ресурси працюють так само.
У русі:
struct MyCoin has key, store {
value: u64
}
*** key
— Може зберігатися як об'єкт верхнього рівня.
*** store
— Може зберігатися всередині іншого об'єкта.
Якщо ви спробуєтескопіюватиресурс, компілятор відмовиться компілювати ваш код. Це запобігає помилкам, коли активи випадково клонуються.
##6. Розширення Move, специфічні для SUI
Sui внесла кілька змін до vanilla Move, щоб оптимізувати його длявиконанняна основі об'єктів**:
*Поля динамічних об'єктів: Ви можете додавати поля до об'єктів після їх створення. *Спільні об'єкти: Кілька користувачів можуть взаємодіяти з одним об'єктом. *Змінювані посилання: Дозволити змінювати дані об'єкта контрольованим способом. *Видача подій: Модулі переміщення можуть видавати події для позаланцюгових слухачів.
Наприклад, створення загальної таблиці лідерів гри:
struct Leaderboard has key {
scores: vector<u64>
}
Це може бути оновлено кількома гравцями, не викликаючи вузьких місць у всьому блокчейні.
##7. Робочий процес розробки
Ось основний робочий процес для розробки за допомогою Move on Sui:
1.Встановіть Sui CLI
curl -fsSL https://sui.io/install.sh | bash
2.Створіть новий пакет переміщення
sui move new my_project
sources
Запишіть свої модулів папку.
4.Створіть свій пакет
sui move build
5.Опублікувати в Sui
sui client publish --gas-budget 100000000
6.Функції викликуза допомогою:
sui client call --package <PACKAGE_ID> --module my_module --function my_function
##8. Тестування коду переміщення
Sui Move підтримує тестування одиниць прямо на мові.
Приклад:
#[test]
fun test_mint() {
let ctx = test::new_tx_context(@0x1);
my_project::my_coin::mint(&mut ctx);
// Add assertions here
}
Запустіть тести:
sui move test
##9. Поширені помилки, які роблять новачки
*Забуття передати txContext— Багато функцій потребують &mut TxContext
створення або передачі об'єктів.
*Нерозуміння права власності на об'єкт- Якщо ви не володієте ним, ви не можете його мутувати.
*Не обробляємо знищення активів— Ви повинні явно «знищити» ресурси, які вам більше не потрібні.
*Публікація без версії— Оновлення модуля означає публікацію нової версії.
##10. Найкращі практики руху на Sui
*Використовуйте чіткі правила іменування— робить код читабельним. *Обмежити використання спільних об'єктів— вони повільніші, ніж об'єкти, що належать. *Випускати події для змін стану— Допомагає з індексацією поза ланцюгом. *Напишіть ретельні тести- Компілятор багато ловить, але логічні помилки все ще трапляються. *Документуйте свої модулі- Майбутнє ви будете дякувати вам.
##11. Реальні випадки використання
*Ігрові активи— Кожен меч, шкіра або домашня тварина можуть бути унікальним об'єктом. *NFT Marketplaces— Безпечні передачі та аукціони з вбудованими перевірками власності. *Протоколи DeFi— Кредитування, стейкінг та свопи з використанням безпечної обробки активів. *Відстеження ланцюга постачання— представляти товари як об'єкти, що рухаються по системі.
##12. Майбутнє руху на Sui
Мова руху Суй все ще розвивається. Поточна робота включає в себе:
- Кращійінструмент розробника. *Стандартні бібліотекидля загальних шаблонів. *Суперсумісністьз іншими блокчейнами.
У міру зростання прийняття ми можемо очікувати багатшої документації, більших проектів з відкритим кодом та глибшої інтеграції з інфраструктурою Web3.
##Остаточні думки
Якщо ви серйозно ставитеся до створення** безпечних, високопродуктивних блокчейн-додатків**, Move on Sui вартий вашої уваги. Його суворий, але логічний дизайн допомагає уникнути цілих категорій помилок, одночасно дозволяючи інноваційні випадки використання, які неможливі в традиційних мережах на основі облікових записів.
Незалежно від того, чи створюєте ви протокол DeFi, гру чи складну екосистему NFT, Move надає вамбудівельні блоки для безпечнішого та швидшого майбутнього блокчейну.
- Move CLI
- Move
- Smart Contract
Відповіді
1Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Зароби свою частку з 1000 Sui
Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.
