Move.

Допис

Діліться своїми знаннями.

FUNLOP431.
Aug 13, 2025
Питання та відповіді експертів

Освоєння руху в мережі 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
  1. 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
0
1
Поділитися
Коментарі
.

Відповіді

1
Jeff .
Aug 15 2025, 09:25

Приголомшлива стаття.

0
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

152Пости259Відповіді
Sui.X.Peera.

Зароби свою частку з 1000 Sui

Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

Кампанія винагородСерпень