Let's Move Sui: Sui’s Underlying Move Language Explained

IntermediateJun 12, 2024
Sui Network relies on smart contract execution, where the Move language, developed in Rust on the Sui blockchain, plays a crucial role. We delve into the underlying Move language of Sui to explore its unique charm different from other blockchain programming languages.
Let's Move Sui: Sui’s Underlying Move Language Explained

Sui is an L1 public chain redesigned and built from first principles, aiming to provide a development platform capable of accommodating the next billion users in Web3 for creators and developers.

This year, Sui’s native programming language Move has undergone significant updates and upgrades. The 2024 version introduces important features such as Enums, macro functions, Method syntax, and more. These essential new features introduce new ways of defining data and calling functions in the Move programming language, making application development on Sui more flexible and aligned with the latest expectations of programming languages.

What is the key role of the Move language in the Sui ecosystem? In fact, the entire Sui ecosystem is built on the foundation of three key concepts, ensuring instant transaction settlement and low transaction costs—the three core pillars being the Move language, parallel transaction execution, and the Sui consensus engine.

Applications on Sui are based on the Move smart contract language, which focuses on smart contracts and fully leverages Sui’s scalability and high throughput environment, enabling developers to support a wide range of applications quickly and cost-effectively.

In previous articles (“How does Sui create the next development platform for Web3 billion users?”), TinTinLand introduced in detail the basic situation of Sui’s technical advantages, market prospects and ecological construction. Today we’re going to dive into Sui’s underlying layer - Move language, exploring its unique style that is different from other blockchain programming languages.

Features of Move Language

The Sui network relies on smart contract execution, where the Move language, developed in Rust on the Sui blockchain, plays a crucial role. The Move language used by Sui, compared to ETH’s Solidity, offers stronger security and reliability. Additionally, Sui has modified the Move language to be object-centric, emphasizing object-oriented programming.

The Move language on Sui allows for the creation of customized smart contracts tailored to specific use cases, aiding in improving the different processes involved in project and application development and implementation, and helping to reduce costs associated with traditional intermediaries. Through this, more developers and users are expected to enter the Sui ecosystem.

Furthermore, the design of Sui’s Move language prevents double spending. In this way, it can help Sui establish one of the most secure smart contract platforms, addressing and improving upon the inherent flaws of existing cryptocurrency programming languages.

Original Goal of the Move Language

Sam Blackshear, co-founder and CTO of Sui/Mysten Labs, and the creator of the Move language, developed Move while working on the Diem blockchain project at Meta (formerly Facebook).

Before designing the Move language, Sam spent several months carefully studying Solidity and the EVM. He believed that smart contract languages should be more like domain-specific languages (DSLs) rather than general-purpose programming languages. These languages focus on specific tasks such as creating objects, transmitting and sharing objects, and performing access control checks. The core abstractions of smart contract programming should revolve around these tasks to ensure safety and efficiency.

As a result, Sam and his team decided to design a new language called Move instead of attempting to overhaul existing technologies like EVM or Solidity. Move starts with B code and incorporates features such as memory safety, type safety, resource safety, and user-friendly handling of objects/assets.

With the successful creation of the Move language, the next important step is to attract more developers to use Move for development by providing attractive incentives. Overcoming barriers such as complex key management, wallet installation, and native token acquisition is crucial to attracting developers, according to them.

Therefore, the goal of the Move development team is to transform these challenges into technical problems by providing features such as ZK login, enabling transactions without the need to install wallets, and allowing sponsors’ transactions to pay transaction fees for others, thereby enabling developers to explore richer revenue models.

The Move language in the Sui ecosystem, which is object-centric with features such as global storage, address representation of object IDs, and globally unique object IDs, forms the underlying foundation for other technological innovations in Sui.

Core advantages of Move language

The core advantages of the Move language used by the Sui network include:

  1. The Move language introduces a resource model, and each Object is regarded as a unique entity, making it more secure.

  2. Move provides a strict type system and ownership model, which helps detect and prevent various vulnerabilities at compile time, and is especially suitable for processing complex financial transactions.

  3. Move supports a high degree of modularity and composability, allowing developers to create interoperable modules and libraries.

Resource-Oriented Data

One of Move’s core innovations is the introduction of resource-oriented data types, which behave like real-world objects and cannot be copied or deleted without a trace, thereby preventing unintended data tampering.

Move supports two core objects: smart contracts (Move packages, which are a set of Move modules) and digital assets (resources). Sui’s native support for resources is expressed through bytecode verification tables. After Move source code is compiled into bytecode, a static analysis tool called the Move Bytecode Verifier ensures that the bytecode follows Sui’s type, memory, and resource safety rules. This verification ensures that objects cannot be created, copied, or unintentionally burned by code outside their defining module. It also includes protection against certain vulnerabilities such as double spending and reentrancy.

Security Model

Move addresses some security issues present in existing languages, such as reentrancy, dynamic dispatch, ownership checks, and object serialization, providing developers with a safer environment.

*It should be noted that Move’s security is not solely based on the absence of hacker attacks to date; no smart contract language can prevent programmers from writing insecure code. Audits and other checks are still required to identify such vulnerabilities.

The key value proposition of Move lies in its typed objects and type safety. Type safety applies not only within the program but also when interacting with external code or untrusted sources.

Another built-in security feature of Move is the bytecode verifier. It ensures that the bytecode of smart contracts is valid and securely executable. The design of the bytecode verifier is intended to prevent malicious code from executing on the chain, such as creating fake coins, artificially increasing coin values, or copying/burning existing coins.

Modular design

Move allows code to be organized into modules, each with its own namespace and privacy rules, making it easier to maintain and reuse code. Move code is organized into modules, similar to individual smart contracts on other blockchains. This modular design is emphasized in Sui, aiming to encourage developers to keep modules small and distributed across different files while adhering to clear data structures and code conventions. This facilitates both application integration and user understanding.

A More Efficient and Secure Development Experience

For Web3 developers, the development experience on Move and Sui is more efficient and secure. It should be noted that for Web3 projects developed using Move, to fully leverage Move’s security advantages, all smart contracts in the system must consistently use Move. When all contracts are written in Move, validators can run and ensure strong assumptions about code and objects.

For example, the Bucket Protocol is building a DeFi project on the Sui ecosystem. When showcasing the system architecture and its collaboration, they specifically mentioned that if they were to write the project in Solidity, it might take eight months, but using Move only took two months, and they have great confidence in its security. The way Move works aligns closely with their idea of project composition.

Sui for the standard Move language

Innovation and exploration

Sui Move evolved from the Move language and is designed to better meet the needs of new high-performance blockchains, so it has certain differences from the standard Move language. Based on the standard Move language, Sui leverages its safety and flexibility to significantly improve throughput and reduce finality latency, and makes Move programming easier to practice.

The Sui Move programming language has many obvious differences from standard Move, including:

  • Sui uses its own object-centric global storage
  • The address represents the object identifier
  • Sui objects have globally unique identifiers
  • Sui has a module initializer (init)
  • The Sui entry point takes an object reference as input

Standard Move language

Move was released in 2020 and is currently licensed under the Apache 2.0 open-source license. It is widely used in networks such as Aptos, StarCoin, 0L, Rooch, Movement, and Offshore.

Standard Move is based on the Rust programming language and is more universal compared to existing blockchain languages, which are often tied to specific blockchains. The goal of Sam, creator of Move language, is to create the JavaScript of Web3, a cross-platform language that allows developers to apply their skills in multiple network environments.

The main focus of Move is smart contracts, which include types and value representations for assets and access control, two fundamental concepts often encountered by DApp developers when coding. Move’s first-class abstraction of types makes programming safer and more efficient.

From Move to Sui Move

While Move language is platform-agnostic, it is limited by an account-centric model. When Sam and his team at Mysten Labs focused on building Sui, they concentrated on creating a more universal network infrastructure rather than the limited scope of the Diem blockchain in the Libra project.

Sui Move is designed as a branch of the Move language to better accommodate Sui’s innovations, such as its consensus model, with the most significant difference being its adoption of an object-oriented data storage model. By using Sui Move as its native programming language, the Sui network achieves impressive transaction performance with apps written in Sui Move leveraging Sui’s consensus mechanism.

Last year, Sam detailed the differences between Move and Sui Move in an article titled “Why We Created Sui Move,” showcasing the features and capabilities of Sui Move.

🔗 Read the full article here: https://blog.sui.io/why-we-created-sui-move

By focusing on objects, parallel transaction processing becomes possible, offering better performance compared to blockchains limited to serial processing. At a higher level, the Sui runtime can directly determine exclusive objects versus shared objects, performing immediate validation on the former and applying consensus validation on the latter.

From a developer’s perspective, Sui eliminates the need for extensive pre- and post-transaction work related to asset ownership. While the original Move language controls global storage through addresses and type names, Sui Move uses object IDs for global storage control. The emphasis on object status gives Sui Move limitless possibilities, such as composability, where objects can own other objects.

Embark on the Move Development Journey

Move and other blockchain languages are deeply influenced by the traditions of cryptography, focusing more on asset ownership, leading them to be account-centric rather than asset-centric. Sui Move’s fork provides greater flexibility in creating and operating assets, opening doors to a variety of powerful programs and games awaited by the masses.

So how do you transition from developing with standard Move language to Sui Move? Developers familiar with the original Move will add a highly useful, portable language to their toolbox. To delve into Sui Move, one needs to think from the perspective of objects and learn some new instructions, but tools like Sui Move Analyzer and WELLDONE Code plugins can simplify this process.

🛠️ Sui Move Analyzer Plugin: https://zh.blog.sui.io/move-analyzer-tutorial/

🛠️ WELLDONE Code Plugin: https://zh.blog.sui.io/remix-ide-welldone-code/

🔍 Explore more about Move language development:

📄 Move Developer Documentation: https://docs-zh.sui-book.com/concepts/sui-move-concepts/

📄 Sui Developer Documentation: https://docs.sui.io/guides/developer/sui-101

📄 Basic Development Tutorials: https://zh.blog.sui.io/encode-club-sui-series-1/

Disclaimer:

  1. This article is reprinted from [TinTinLand], All copyrights belong to the original author [TinTinLand]. If there are objections to this reprint, please contact the Gate Learn team, and they will handle it promptly.
  2. Liability Disclaimer: The views and opinions expressed in this article are solely those of the author and do not constitute any investment advice.
  3. Translations of the article into other languages are done by the Gate Learn team. Unless mentioned, copying, distributing, or plagiarizing the translated articles is prohibited.

Let's Move Sui: Sui’s Underlying Move Language Explained

IntermediateJun 12, 2024
Sui Network relies on smart contract execution, where the Move language, developed in Rust on the Sui blockchain, plays a crucial role. We delve into the underlying Move language of Sui to explore its unique charm different from other blockchain programming languages.
Let's Move Sui: Sui’s Underlying Move Language Explained

Sui is an L1 public chain redesigned and built from first principles, aiming to provide a development platform capable of accommodating the next billion users in Web3 for creators and developers.

This year, Sui’s native programming language Move has undergone significant updates and upgrades. The 2024 version introduces important features such as Enums, macro functions, Method syntax, and more. These essential new features introduce new ways of defining data and calling functions in the Move programming language, making application development on Sui more flexible and aligned with the latest expectations of programming languages.

What is the key role of the Move language in the Sui ecosystem? In fact, the entire Sui ecosystem is built on the foundation of three key concepts, ensuring instant transaction settlement and low transaction costs—the three core pillars being the Move language, parallel transaction execution, and the Sui consensus engine.

Applications on Sui are based on the Move smart contract language, which focuses on smart contracts and fully leverages Sui’s scalability and high throughput environment, enabling developers to support a wide range of applications quickly and cost-effectively.

In previous articles (“How does Sui create the next development platform for Web3 billion users?”), TinTinLand introduced in detail the basic situation of Sui’s technical advantages, market prospects and ecological construction. Today we’re going to dive into Sui’s underlying layer - Move language, exploring its unique style that is different from other blockchain programming languages.

Features of Move Language

The Sui network relies on smart contract execution, where the Move language, developed in Rust on the Sui blockchain, plays a crucial role. The Move language used by Sui, compared to ETH’s Solidity, offers stronger security and reliability. Additionally, Sui has modified the Move language to be object-centric, emphasizing object-oriented programming.

The Move language on Sui allows for the creation of customized smart contracts tailored to specific use cases, aiding in improving the different processes involved in project and application development and implementation, and helping to reduce costs associated with traditional intermediaries. Through this, more developers and users are expected to enter the Sui ecosystem.

Furthermore, the design of Sui’s Move language prevents double spending. In this way, it can help Sui establish one of the most secure smart contract platforms, addressing and improving upon the inherent flaws of existing cryptocurrency programming languages.

Original Goal of the Move Language

Sam Blackshear, co-founder and CTO of Sui/Mysten Labs, and the creator of the Move language, developed Move while working on the Diem blockchain project at Meta (formerly Facebook).

Before designing the Move language, Sam spent several months carefully studying Solidity and the EVM. He believed that smart contract languages should be more like domain-specific languages (DSLs) rather than general-purpose programming languages. These languages focus on specific tasks such as creating objects, transmitting and sharing objects, and performing access control checks. The core abstractions of smart contract programming should revolve around these tasks to ensure safety and efficiency.

As a result, Sam and his team decided to design a new language called Move instead of attempting to overhaul existing technologies like EVM or Solidity. Move starts with B code and incorporates features such as memory safety, type safety, resource safety, and user-friendly handling of objects/assets.

With the successful creation of the Move language, the next important step is to attract more developers to use Move for development by providing attractive incentives. Overcoming barriers such as complex key management, wallet installation, and native token acquisition is crucial to attracting developers, according to them.

Therefore, the goal of the Move development team is to transform these challenges into technical problems by providing features such as ZK login, enabling transactions without the need to install wallets, and allowing sponsors’ transactions to pay transaction fees for others, thereby enabling developers to explore richer revenue models.

The Move language in the Sui ecosystem, which is object-centric with features such as global storage, address representation of object IDs, and globally unique object IDs, forms the underlying foundation for other technological innovations in Sui.

Core advantages of Move language

The core advantages of the Move language used by the Sui network include:

  1. The Move language introduces a resource model, and each Object is regarded as a unique entity, making it more secure.

  2. Move provides a strict type system and ownership model, which helps detect and prevent various vulnerabilities at compile time, and is especially suitable for processing complex financial transactions.

  3. Move supports a high degree of modularity and composability, allowing developers to create interoperable modules and libraries.

Resource-Oriented Data

One of Move’s core innovations is the introduction of resource-oriented data types, which behave like real-world objects and cannot be copied or deleted without a trace, thereby preventing unintended data tampering.

Move supports two core objects: smart contracts (Move packages, which are a set of Move modules) and digital assets (resources). Sui’s native support for resources is expressed through bytecode verification tables. After Move source code is compiled into bytecode, a static analysis tool called the Move Bytecode Verifier ensures that the bytecode follows Sui’s type, memory, and resource safety rules. This verification ensures that objects cannot be created, copied, or unintentionally burned by code outside their defining module. It also includes protection against certain vulnerabilities such as double spending and reentrancy.

Security Model

Move addresses some security issues present in existing languages, such as reentrancy, dynamic dispatch, ownership checks, and object serialization, providing developers with a safer environment.

*It should be noted that Move’s security is not solely based on the absence of hacker attacks to date; no smart contract language can prevent programmers from writing insecure code. Audits and other checks are still required to identify such vulnerabilities.

The key value proposition of Move lies in its typed objects and type safety. Type safety applies not only within the program but also when interacting with external code or untrusted sources.

Another built-in security feature of Move is the bytecode verifier. It ensures that the bytecode of smart contracts is valid and securely executable. The design of the bytecode verifier is intended to prevent malicious code from executing on the chain, such as creating fake coins, artificially increasing coin values, or copying/burning existing coins.

Modular design

Move allows code to be organized into modules, each with its own namespace and privacy rules, making it easier to maintain and reuse code. Move code is organized into modules, similar to individual smart contracts on other blockchains. This modular design is emphasized in Sui, aiming to encourage developers to keep modules small and distributed across different files while adhering to clear data structures and code conventions. This facilitates both application integration and user understanding.

A More Efficient and Secure Development Experience

For Web3 developers, the development experience on Move and Sui is more efficient and secure. It should be noted that for Web3 projects developed using Move, to fully leverage Move’s security advantages, all smart contracts in the system must consistently use Move. When all contracts are written in Move, validators can run and ensure strong assumptions about code and objects.

For example, the Bucket Protocol is building a DeFi project on the Sui ecosystem. When showcasing the system architecture and its collaboration, they specifically mentioned that if they were to write the project in Solidity, it might take eight months, but using Move only took two months, and they have great confidence in its security. The way Move works aligns closely with their idea of project composition.

Sui for the standard Move language

Innovation and exploration

Sui Move evolved from the Move language and is designed to better meet the needs of new high-performance blockchains, so it has certain differences from the standard Move language. Based on the standard Move language, Sui leverages its safety and flexibility to significantly improve throughput and reduce finality latency, and makes Move programming easier to practice.

The Sui Move programming language has many obvious differences from standard Move, including:

  • Sui uses its own object-centric global storage
  • The address represents the object identifier
  • Sui objects have globally unique identifiers
  • Sui has a module initializer (init)
  • The Sui entry point takes an object reference as input

Standard Move language

Move was released in 2020 and is currently licensed under the Apache 2.0 open-source license. It is widely used in networks such as Aptos, StarCoin, 0L, Rooch, Movement, and Offshore.

Standard Move is based on the Rust programming language and is more universal compared to existing blockchain languages, which are often tied to specific blockchains. The goal of Sam, creator of Move language, is to create the JavaScript of Web3, a cross-platform language that allows developers to apply their skills in multiple network environments.

The main focus of Move is smart contracts, which include types and value representations for assets and access control, two fundamental concepts often encountered by DApp developers when coding. Move’s first-class abstraction of types makes programming safer and more efficient.

From Move to Sui Move

While Move language is platform-agnostic, it is limited by an account-centric model. When Sam and his team at Mysten Labs focused on building Sui, they concentrated on creating a more universal network infrastructure rather than the limited scope of the Diem blockchain in the Libra project.

Sui Move is designed as a branch of the Move language to better accommodate Sui’s innovations, such as its consensus model, with the most significant difference being its adoption of an object-oriented data storage model. By using Sui Move as its native programming language, the Sui network achieves impressive transaction performance with apps written in Sui Move leveraging Sui’s consensus mechanism.

Last year, Sam detailed the differences between Move and Sui Move in an article titled “Why We Created Sui Move,” showcasing the features and capabilities of Sui Move.

🔗 Read the full article here: https://blog.sui.io/why-we-created-sui-move

By focusing on objects, parallel transaction processing becomes possible, offering better performance compared to blockchains limited to serial processing. At a higher level, the Sui runtime can directly determine exclusive objects versus shared objects, performing immediate validation on the former and applying consensus validation on the latter.

From a developer’s perspective, Sui eliminates the need for extensive pre- and post-transaction work related to asset ownership. While the original Move language controls global storage through addresses and type names, Sui Move uses object IDs for global storage control. The emphasis on object status gives Sui Move limitless possibilities, such as composability, where objects can own other objects.

Embark on the Move Development Journey

Move and other blockchain languages are deeply influenced by the traditions of cryptography, focusing more on asset ownership, leading them to be account-centric rather than asset-centric. Sui Move’s fork provides greater flexibility in creating and operating assets, opening doors to a variety of powerful programs and games awaited by the masses.

So how do you transition from developing with standard Move language to Sui Move? Developers familiar with the original Move will add a highly useful, portable language to their toolbox. To delve into Sui Move, one needs to think from the perspective of objects and learn some new instructions, but tools like Sui Move Analyzer and WELLDONE Code plugins can simplify this process.

🛠️ Sui Move Analyzer Plugin: https://zh.blog.sui.io/move-analyzer-tutorial/

🛠️ WELLDONE Code Plugin: https://zh.blog.sui.io/remix-ide-welldone-code/

🔍 Explore more about Move language development:

📄 Move Developer Documentation: https://docs-zh.sui-book.com/concepts/sui-move-concepts/

📄 Sui Developer Documentation: https://docs.sui.io/guides/developer/sui-101

📄 Basic Development Tutorials: https://zh.blog.sui.io/encode-club-sui-series-1/

Disclaimer:

  1. This article is reprinted from [TinTinLand], All copyrights belong to the original author [TinTinLand]. If there are objections to this reprint, please contact the Gate Learn team, and they will handle it promptly.
  2. Liability Disclaimer: The views and opinions expressed in this article are solely those of the author and do not constitute any investment advice.
  3. Translations of the article into other languages are done by the Gate Learn team. Unless mentioned, copying, distributing, or plagiarizing the translated articles is prohibited.
Empieza ahora
¡Regístrate y recibe un bono de
$100
!
Crea tu cuenta