Move.

Bài viết

Chia sẻ kiến thức của bạn.

Tiền thưởng+10

Peera Admin.
Mar 11, 2025
Hỏi đáp Chuyên Gia

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
2
1
Chia sẻ
Bình luận
.

Câu trả lời

1
0xduckmove.
Mar 13 2025, 08:18

Hãy so sánh về Sui Move và Aptos Move.Hai người này giống như anh chị em trong gia đình ngôn ngữ Move, nhưng họ chắc chắn có tính cách riêng:

#** Chúng cuộn như thế nào? Sự khác biệt về thời gian chạy: Hiệu suất, Khả năng mở rộng và Kinh nghiệm của nhà phát triển**

Cả Sui và Aptos đều triển khai các máy ảo Move tùy chỉnh (VM), đóng vai trò là thời gian chạy của chúng, ảnh hưởng đến hiệu suất, khả năng mở rộng và trải nghiệm của nhà phát triển.

Nghiên cứu chỉ ra rằng Sui Move giống như người bạn luôn vội vã xung quanh, hoàn thành công việc nhanh chóng.** Máy ảo của nó được xây dựng để có tốc độ — hãy nghĩ 0,5 giây để khóa giao dịch**, nhờ một số thủ thuật thực thi song song lạ mắt với thiết lập DAG (ví dụ: 0,5 giây, như đã lưu ý trong Aptos vs Sui vs Movement: Move Blockchains So sánh)

hình ảnh

Ngược lại, Aptos sử dụng kiến trúc tuyến tính với khả năng thực thi song song, nhưng sự đồng thuận của nó về mọi giao dịch có thể gây ra tắc nghẽn trên quy mô lớn, với thời gian cuối cùng khoảng 0,9 giây.

Thứ tự nhân quả của Sui có nghĩa là nhiều giao dịch không yêu cầu sự đồng thuận hoàn toàn, giảm độ trễ, trong khi Aptos sử dụng AptosBFT, một dẫn xuất của HotStuff, đảm bảo hoàn thiện nhanh chóng nhưng có khả năng chi phí tính toán cao hơn.

Mô hình của Sui bao gồm giá khí tham chiếu được thiết lập vào đầu mỗi kỷ nguyên, dựa trên đầu vào của trình xác thực, đảm bảo khả năng dự đoán và phí thấp (ví dụ: phí giao dịch trung bình 0,0001 đô la, theo Sui vs. Aptos: Blockchain nào phù hợp với bạn?).

Thư viện tiêu chuẩn: Mô-đun, Chức năng và Trường hợp sử dụng

Bởi vì Sui và Aptos có thiết kế kiến trúc riêng biệt — SUI tập trung vào đối tượng, coi tài sản là đối tượng có thể chuyển nhượng, trong khi Aptos dựa trên tài khoản, liên kết tài sản với tài khoản — thư viện tiêu chuẩn của họ khác nhau đáng kể về cấu trúc và cách sử dụng.

Tạo mã thông báo tùy chỉnh

Trong Aptos, mô-đun managed_coin từ thư viện chuẩn aptos_framework cung cấp một cách đơn giản để tạo và quản lý các mã thông báo có thể thay thế. Đây là một ví dụ:

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);
    }
}

Trường hợp sử dụng này tạo ra một mã thông báo có thể thay thế được gắn với một tài khoản, điển hình trong các hệ thống dựa trên tài khoản như Aptos.

Trong Sui, coinmô-đun từ thư viện tiêu chuẩn sui quản lý mã thông báo dưới dạng đối tượng. Bạn tạo ra một loại tiền tệ và sử dụng một TreasuryCapđối tượng để đúc tiền xu. Đây là một ví dụ:

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)
    }
}

Đúc NFT

Aptos sử dụng mô-đun mã thông báo để quản lý các mã thông báo không thể thay thế (NFT) trong các bộ sưu tập. Dưới đây là cách tạo bộ sưu tập và đúc 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
        );
    }
}```


 Quản lý tài sản kỹ thuật số duy nhất (ví dụ: tác phẩm nghệ thuật) trong một bộ sưu tập có cấu trúc, phổ biến trong các hệ thống NFT dựa trên tài khoản.

Trong Sui, NFT độc lập `objects`với các ID duy nhất, được quản lý bằng các `object``transfer`mô-đun và. Đây là một ví dụ:

```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));
    }
}

Tạo và chuyển giao các tài sản độc đáo (ví dụ: đồ sưu tầm) như các đối tượng độc lập, tận dụng tính linh hoạt lấy đối tượng làm trung tâm của Sui. Những khác biệt này có nghĩa là các nhà phát triển phải điều chỉnh mã, tác động đến thời gian phát triển và khả năng tương tác của hệ sinh thái.

Lưu trữ dữ liệu: Mô hình lấy đối tượng so với mô hình dựa trên tài khoản

Một trong những điểm khác biệt quan trọng nhất là trong lưu trữ dữ liệu. Sui sử dụng mô hình lấy đối tượng làm trung tâm, trong đó mỗi tài sản (ví dụ: token, NFT) là một đối tượng có siêu dữ liệu, quyền sở hữu và quyền, được lưu trữ trên chuỗi với các ID duy nhất ([Mô hình đối tượng | Tài liệu Sui](mô hình https://docs.sui.io/concepts/object-model)).This cho phép cập nhật trạng thái song song, tăng cường khả năng cấu thành và hiệu quả khí, vì các giao dịch thường chỉ yêu cầu một cập nhật sổ cái (ví dụ: chuyển một đối tượng cập nhật trạng thái của nó, không phải nhiều tài khoản).

Ngược lại, Aptos sử dụng mô hình dựa trên tài khoản, tương tự như Ethereum, trong đó tài khoản sở hữu tài nguyên trong lưu trữ toàn cầu, yêu cầu cập nhật cho cả tài khoản người gửi và người nhận trên mỗi giao dịch (Aptos vs Sui - The Tie).

hình ảnh

Gần hơn với EVM hoặc SVM?

Câu hỏi liệu Aptos có gần hơn với EVM (Máy ảo Ethereum) và Sui với SVM (có khả năng là Máy ảo Solana) hay không cần phải làm rõ. Mô hình dựa trên tài khoản của Aptos phù hợp với EVM, cập nhật trạng thái tài khoản cho mỗi giao dịch, làm cho nó quen thuộc với các nhà phát triển Ethereum (Aptos vs Sui: So sánh hai Blockchains Lớp 1 đang phát triển).

Tuy nhiên, mô hình tập trung vào đối tượng của Sui là duy nhất, không thể so sánh trực tiếp với SVM, dựa trên tài khoản như Solana. Một số nhà phát triển cho rằng Sui giống Solana về khả năng mở rộng, nhưng điều này là về hiệu suất hơn là mô hình dữ liệu. Do đó, công bằng khi nói Aptos gần với EVM hơn, trong khi mô hình của Sui khác biệt, không phù hợp với SVM, thách thức sự tương tự.

Gói phổ quát: Khả năng tương thích và rào cản

Với nguồn gốc chung của chúng, khả năng tương tác lý tưởng sẽ liên quan đến các gói phổ quát. Tuy nhiên, nghiên cứu cho thấy không có gói như vậy tồn tại, vì sự khác biệt trong thư viện tiêu chuẩn và mô hình dữ liệu tạo ra rào cản.

Ví dụ: một gói sử dụng aptos_coin của Aptos sẽ không hoạt động trên Sui nếu không viết lại cho sui: :coin (GitHub - pentagonxyz/movemate: Thư viện khối xây dựng mô-đun cho Move). Các rào cản bao gồm các API dành riêng cho nền tảng, mô hình đối tượng so với tài khoản và triển khai VM khác nhau, khiến khả năng tương thích liền mạch khó xảy ra nếu không có sự thích ứng đáng kể.

2
Câu trả lời hay nhất
Bình luận
.

Bạn có biết câu trả lời không?

Hãy đăng nhập và chia sẻ nó.

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

148Bài viết231Câu trả lời
Sui.X.Peera.

Kiếm phần của bạn từ 1000 Sui

Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.

Chiến dịch phần thưởngTháng Năm
Chúng tôi sử dụng cookie để đảm bảo bạn có trải nghiệm tốt nhất trên trang web của chúng tôi.
Thêm thông tin