Move.

Допис

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

Винагорода+10

Peera Admin.
Mar 11, 2025
Питання та відповіді експертів

Sui Move vs Aptos Move - What is the difference?

Sui Move and Aptos Move - two prominent implementations of the Move programming language. While both are rooted in the same foundational principles, they have diverged significantly in design, execution, and ecosystem development. To better understand their differences, we need to uncover some of their key aspects:

How do their runtimes differ?

Both Sui and Aptos implement their own custom Move virtual machines (VMs). How does this impact performance, scalability, and developer experience? For instance:

  • Does Sui's runtime optimize for parallel execution differently than Aptos'?
  • Are there notable differences in transaction lifecycle management or gas models?

What are the differences between their standard libraries?

The Move standard library is a critical component for building smart contracts. However, Sui and Aptos have forked their implementations, leading to divergence:

  • Are there modules or functions unique to one implementation but absent in the other?
  • How do these differences affect common use cases like token creation, NFTs, or decentralized finance (DeFi)?

How does data storage differ between them?

One of the most significant distinctions lies in how Sui and Aptos handle data storage:

  • Sui uses an object-centric model, where each object has its own ownership and permissions.
  • Aptos, on the other hand, retains a more traditional account-based model similar to Ethereum.
  • How does this impact state management, composability, and gas efficiency?

Is it fair to say that Aptos is closer to EVM while Sui is closer to SVM?

Some developers argue that Aptos' account-based architecture resembles Ethereum's EVM, while Sui's object-centric approach aligns more closely with Solana's SVM.

  • Do you agree with this analogy? Why or why not?
  • How does this architectural choice influence developer ergonomics and application design?

Are there universal packages working for both Sui Move and Aptos Move?

Given their shared origins, it would be ideal if some libraries or tools were interoperable across both ecosystems.

  • Are there any existing universal packages or frameworks that work seamlessly on both platforms?
  • If not, what are the main barriers to achieving compatibility?

Can one of them be transpiled into another?

If a project is built on Sui Move, could it theoretically be transpiled to run on Aptos Move, or vice versa?

  • What are the technical challenges involved in such a process?
  • Are there tools or compilers currently available to facilitate this kind of migration?
  • Move
3
2
Поділитися
Коментарі
.

Відповіді

2
0xduckmove.
Mar 13 2025, 08:18

Давайте порівняємо Sui Move проти Aptos Move.Ці двоє схожі на братів і сестер з мовної сім'ї Move, але вони, безумовно, мають власні особистості:

#Як вони катаються? Відмінності під час виконання: продуктивність, масштабованість та досвід розробника

І Sui, і Aptos реалізують власні віртуальні машини Move (VM), які служать їх часом виконання, впливаючи на продуктивність, масштабованість та досвід розробників.

Дослідження показують, що Sui Move схожий на того друга, який завжди поспішає, швидко виконуючи справи.Його віртуальна машина створена для швидкості — подумайте 0,5 секунди, щоб заблокувати транзакцію, завдяки деяким химерним трюкам паралельного виконання з налаштуванням DAG (наприклад, 0,5 секунди, як зазначено в Aptos проти Sui vs Movement: Move Blok Compared)

зображення

На відміну від цього, Aptos використовує лінійну архітектуру з можливостями паралельного виконання, але його консенсус щодо кожної транзакції може спричинити вузькі місця в масштабі, з кінцевістю близько 0,9 секунди.

Причинне впорядкування Sui означає, що багато транзакцій не вимагають повного консенсусу, зменшуючи затримку, тоді як Aptos використовує aptosBFT, похідну від HotStuff, забезпечуючи швидку остаточну обробку, але потенційно більш високі обчислювальні витрати.

Модель Sui включає еталонну ціну газу, встановлену на початку кожної епохи, на основі вхідних даних валідатора, що забезпечує передбачуваність та низькі комісії (наприклад, середня комісія за транзакцію $0,0001, відповідно до Sui проти Aptos: Який блокчейн підходить для вас?).

Стандартні бібліотеки: модулі, функції та випадки використання

Оскільки Sui та Aptos мають різні архітектурні проекти — SUI є об'єктно-центричним, розглядаючи активи як об'єкти, що передаються, тоді як Aptos заснований на обліковому записі, пов'язуючи активи з обліковими записами — їхні стандартні бібліотеки значно відрізняються за структурою та використанням.

Створення власного токена

У Aptos модуль managed_coin зі стандартної бібліотеки aptos_framework забезпечує простий спосіб створення та управління змінними токенами. Ось приклад:

module example::MyToken {
    use aptos_framework::managed_coin;
    use std::signer;

    /// Struct representing the custom token
    struct MyToken has key { }

    /// Initialize the token with name, symbol, decimals, and monitoring option
    public entry fun initialize(account: &signer) {
        managed_coin::initialize<MyToken>(
            account,
            b"MyToken",           // Name
            b"MTK",              // Symbol
            6,                   // Decimals
            true,                // Enable monitoring
        );
    }

    /// Mint tokens to the caller's account
    public entry fun mint(account: &signer, amount: u64) {
        managed_coin::mint<MyToken>(account, amount);
    }
}

Цей випадок використання створює взаємозамінний токен, прив'язаний до облікового запису, характерний для систем на основі облікових записів, таких як Aptos.

У Sui coinмодуль зі стандартної бібліотеки sui керує токенами як об'єктами. Ви створюєте валюту і використовуєте TreasuryCapоб'єкт для карбування монет. Ось приклад:

module example::MyToken {
    use sui::coin::{Self, Coin, TreasuryCap};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

    /// Struct defining the custom token type (with `drop` for currency creation)
    struct MY_TOKEN has drop { }

    /// Create a new currency and transfer its TreasuryCap and metadata
    public entry fun create_currency(ctx: &mut TxContext) {
        let (treasury_cap, metadata) = coin::create_currency(
            MY_TOKEN {},         // Token type witness
            6,                   // Decimals
            b"MTK",              // Symbol
            b"MyToken",          // Name
            b"A custom token",   // Description
            option::none(),      // Optional icon URL
            ctx,
        );
        transfer::public_transfer(treasury_cap, tx_context::sender(ctx));
        transfer::public_transfer(metadata, tx_context::sender(ctx));
    }

    /// Mint new coins using the TreasuryCap
    public fun mint(
        treasury_cap: &mut TreasuryCap<MY_TOKEN>,
        amount: u64,
        ctx: &mut TxContext
    ): Coin<MY_TOKEN> {
        coin::mint(treasury_cap, amount, ctx)
    }
}

Карбування NFT

Aptos використовує модуль токенів для управління незмінними токенами (NFT) у колекціях. Ось як створити колекцію та створити NFT:

module example::MyNFT {
    use aptos_framework::token;
    use std::string;
    use std::signer;

    /// Create a new NFT collection
    public entry fun create_collection(creator: &signer) {
        token::create_collection(
            creator,
            string::utf8(b"MyCollection"),       // Collection name
            string::utf8(b"A collection of NFTs"), // Description
            string::utf8(b"https://example.com"), // URI
            true, true, true, true, true, true, true, true, true, // Mutability flags
        );
    }

    /// Mint an NFT within the collection
    public entry fun mint_nft(
        creator: &signer,
        collection: &string::String,
        name: &string::String,
        uri: &string::String
    ) {
        token::create_token(
            creator,
            *collection,
            *name,
            string::utf8(b"Description"), // Token description
            1,                            // Maximum supply (1 for NFT)
            *uri,                         // Token URI
            0, 0, 0,                      // Royalty settings
            vector::empty(),              // Property keys
            vector::empty(),              // Property values
            vector::empty(),              // Property types
        );
    }
}```


 Управління унікальними цифровими активами (наприклад, ілюстраціями) у структурованій колекції, поширеній у системах NFT на основі облікових записів.

У Sui NFT є автономними `objects`з унікальними ідентифікаторами, керованими за допомогою `object``transfer`модулів і. Ось приклад:

```rust
module example::MyNFT {
    use sui::object::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};
    use std::string;

    /// Struct representing an NFT
    struct MyNFT has key {
        id: UID,
        name: string::String,
        uri: string::String,
    }

    /// Mint an NFT and transfer it to the sender
    public entry fun mint(
        ctx: &mut TxContext,
        name: string::String,
        uri: string::String
    ) {
        let nft = MyNFT {
            id: object::new(ctx),  // Generate a unique ID
            name,
            uri,
        };
        transfer::transfer(nft, tx_context::sender(ctx));
    }
}

Створення та передача унікальних активів (наприклад, предметів колекціонування) як незалежних об'єктів, використовуючи об'єктно-орієнтовану гнучкість Суї. Ці відмінності означають, що розробники повинні адаптувати код, впливаючи на час розробки та взаємодію екосистем.

Зберігання даних: об'єктно-орієнтовані проти моделей на основі облікових записів

Однією з найважливіших відмінностей є зберігання даних. Sui використовує об'єктно-орієнтовану модель, де кожен актив (наприклад, токени, NFT) є об'єктом з метаданими, власністю та дозволами, що зберігаються в ланцюжку з унікальними ідентифікаторами (Об'єктна модель | Документація Sui).This модель дозволяє паралельно оновлювати стан, підвищуючи складність та ефективність газу, оскільки транзакції часто вимагають лише одного оновлення книги (наприклад, перенесення об'єкта оновлює його стан, а не кілька облікових записів).

Aptos, навпаки, використовує модель на основі облікового запису, подібну до Ethereum, де облікові записи мають власні ресурси в глобальному сховищі, що вимагає оновлення як облікових записів відправника, так і одержувача за транзакцію (Aptos проти Sui - The Tie).

зображення

Ближче до EVM або SVM?

Питання про те, чи ближче Aptos до EVM (віртуальна машина Ethereum) та Sui до SVM (ймовірно, віртуальна машина Solana), вимагає роз'яснень. Модель на основі облікового запису Aptos узгоджується з EVM, оновлюючи стан облікових записів за транзакцію, роблячи її звичною для розробників Ethereum (Aptos проти Sui: Порівняння двох зростаючих блокчейнів рівня 1).

Об'єктно-центрична модель Суї, однак, унікальна, не порівнянна безпосередньо з SVM, яка заснована на обліковому записі, як Солана. Деякі розробники стверджують, що Sui нагадує Solana за масштабованістю, але це більше про продуктивність, ніж про моделі даних. Таким чином, справедливо сказати, що Aptos ближче до EVM, тоді як модель Суї відрізняється, не узгоджується з SVM, що кидає виклик аналогії.

Універсальні пакети: сумісність та бар'єри

Враховуючи їх спільне походження, ідеальна сумісність передбачала б універсальні пакети. Однак дослідження показують, що таких пакетів не існує, оскільки відмінності у стандартних бібліотеках та моделях даних створюють бар'єри.

Наприклад, пакет з використанням aptos_coin Aptos не працюватиме на Sui без перезапису для sui: :coin (GitHub - pentagonxyz/movemate: Бібліотека модульних блоків для Move). Бар'єри включають специфічні для платформи API, моделі об'єктів проти облікових записів та розбіжні реалізації VM, що робить безперебійну сумісність малоймовірною без значної адаптації.

3
Найкраща відповідь
Коментарі
.
BigDev.
Aug 15 2025, 16:34

Ось чітке порівняння між Sui Move та Aptos Move, яке показує, як вони мають спільну основну мову, але відрізняються поведінкою під час виконання, моделями даних та моделями розробки.

🏃 Час виконання: швидкість, масштабованість та потік транзакцій

Час виконання Sui оптимізовано для паралельного виконання за допомогою моделі DAG. Багато транзакцій пропускають глобальний консенсус завдяки причинному впорядкуванню, тому прості перекази можуть завершитися приблизно за 0,5 секунди. Він створений для випадків використання з високою пропускною здатністю та низькою затримкою.

Aptos також підтримує паралельне виконання, але використовує більш сувору модель консенсусу aptosBFT (на основі HotStuff), тому кожна транзакція проходить через консенсус. Це дає більш сильні гарантії послідовності, але може трохи уповільнити ситуацію - кінцевість досягає приблизно 0,9 секунди.

Коротше кажучи: • Sui швидший для простих, незалежних операцій. • Aptos більше схиляється до узгодженості з більш широким консенсусом за tx.

🧱 Модель даних: об'єктно-орієнтована проти облікового запису

Вся модель Суй обертається навколо об'єктів. Все в мережі — токени, NFT, навіть пакети — є об'єктами з унікальними ідентифікаторами. Право власності відстежується на об'єкт. Це означає: • Легка композиція та модульна конструкція • Одна транзакція = зміна одного об'єкта = ефективний газ • Чудово підходить для ігор, NFT та складеного DeFi

Aptos дотримується більш звичної моделі на основі облікового запису. Облікові записи мають власні структуровані ресурси, і кожна транзакція оновлює рахунки відправника/одержувача. Це більше схоже на Ethereum: • Знайомий для розробників Solidity • Сильна консистенція стану • Краще підходить для традиційних потоків токенів

Отже: • Sui → Подібно до управління активами як окремими суб'єктами • Aptos → Як управління балансами, пов'язаними зі станом рахунку

💰 Створення токенів: TreasuryCap проти керованої монети

У Sui ви визначаєте маркер як об'єкт (MY_TOKEN) і карбуєте його через TreasuryCap. Функція coin: :create_currency дає вам повний контроль над метаданими та логікою постачання. Токени також є об'єктами.

В Aptos ви використовуєте модуль managed_coin. Він прив'язує токен до облікового запису та відстежує постачання через доступ до ресурсів.

Резюме: • Sui → Токен - це об'єкт з UID, живе в ланцюжку • Aptos → Токен - ресурс під контролем облікового запису

🎨 NFT: колекції проти автономних об'єктів

Aptos NFT карбуються всередині колекцій за допомогою токена: :create_token, прив'язаного до сховища облікового запису.

Sui NFT — це окремі об'єкти з власним ідентифікатором та метаданими. Ви малюєте і переносите їх, як будь-який предмет, з повною гнучкістю.

Це означає: • Aptos → Краще для кураторських колекцій • Sui → Краще для складених дозволених NFT (наприклад, ігрових предметів)

🔧 Досвід розробника та взаємодія • Sui встановлює ціну газу один раз за епоху → дешево + передбачувано • Газ Aptos динамічний, але більш точний на tx

Але інтерп важкий. Синтаксис спільного переміщення не дорівнює спільним пакетам: • aptos_framework: :монета ≠ sui: :монета • Логіка на основі облікового запису не легко переноситься в об'єктну логіку

Ось чому універсальних пакетів ще не існує. Навіть із загальним корінням відмінності VM/Runtime змушують розробників писати логіку, специфічну для ланцюга.

🔄 Порівняння EVM проти SVM • Aptos ближче до EVM — модель облікового запису, аналогічні оновлення стану • Суй не зовсім схожий на Солану (SVM також заснований на обліковому записі). Він унікальний, з дизайном, орієнтованим на об'єкт

Тож забудьте аналогії - Суй стоїть один у тому, як моделює дані та виконання.

📦 Як команди обробляють сумісність

Якщо ви створюєте крос-ланцюг: • Вам знадобляться адаптери або окремі модулі на ланцюжок • Такі інструменти, як MoveMate або Pentagon, допомагають, але повний взаємодія все ще означає запис для кожного виконання • Деякі розробники починають на Aptos для простоти, а потім переходять до Sui для масштабування та логіки об'єктів

TL; DR — рух Суї проти Аптоса

Функція Sui Move Aptos Move Паралельний час виконання, на основі DAG, консенсус BFT кінцевості до 1 с, сильна послідовність Модель даних Об'єктно-орієнтований обліковий запис Створення токена через об'єкт TreasuryCap Через managed_coin в обліковому записі NFT Автономні, складаються об'єкти на основі колекції, прив'язані до облікового запису Досвід розробників Швидка, складна, нова модель Знайома, стабільна, схожа на Ethereum Модель газу, орієнтована на епоху, орієнтована на референтну ціну за ТХ Interop Low, потребує логіки, специфічної для ланцюга Те саме

1
Коментарі
.

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

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

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

270Пости616Відповіді
Sui.X.Peera.

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

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