Move: Sui Blockchain Programming Language

Recently gained notice when utilized for Aptos and Sui Blockchain, Move programming language has impressed by its optimization compared to standard languages.

Introduction

The Move programming language has the potential to revolutionize blockchain development and its applications. Developed by Facebook, this open-source programming language is designed to enable developers to build safe, secure apps resistant to tampering or censorship. In this blog post, we'll explore what makes Move different from traditional programming languages and discuss possible use cases it might have within the digital economy. Read on to see if this revolutionary language could be something you need in your tool belt!

What Is Move Programming Language?

Move basically functions as an executable bytecode language for smart contracts and custom transactions. Move was developed in part in response to well-known issues with other blockchain programming languages, namely Solidity. Move offers a safe and adaptable solution to issues in digital asset management that enforce two different features: scarcity and access control.

Move programming language has two fundamental qualities. Move has a type system for various resources in the design, which gives assurance for these properties. Move also makes sure that resources are automatically encapsulated with access control rights.

Why Mysten Labs Created Sui Move?

The first Move-based blockchain was Diem, and since then, Move-based chains like 0L, StarCoin, and Aptos have generally followed the Diem model. Although the Diem-style Move has certain positive aspects, some basic smart contract use cases are difficult to execute due to the permissioned nature of the Diem and some implementation specifics of the Diem blockchain (particularly the storage architecture).

In particular, the early designs of Move and Diem predate the meteoric rise in the popularity of NFTs and have several peculiarities that make it challenging to build use cases involving NFTs. Therefore, in order to address the underlying issues and enhance the benefits of Sui Diem, Mysten Lab must develop its own Sui Move.

How Sui Move differs from Core Move

The basic Move language (previously Diem) and the Move we use in Sui are contrasted in this section by the Sui programming model. First off, keep in mind that Sui is a platform and Move is a language.

Object-centric global storage

Global storage can be accessed by special operations and a variety of different global storage operators in the basic Move programming paradigm. Storage is kept in the Global Storage Move core for both resources and modules. A new module address defined in Move will get the module when you publish it. A new object, also known as a resource, is typically stored at an address when it is created.

On-chain storage, however, is pricy and scarce (not optimized for storage and indexing). Blockchains now in use are not scalable enough to support storage-intensive applications like online markets and social media platforms.

Therefore, Sui Move lacks a worldwide repository. In Sui Move, no actions involving global storage are permitted. Instead, only in Sui is where archiving happen. A published module is kept in Sui memory as opposed to Move memory. Similarly, recently produced objects are kept in Sui storage. This also means that we cannot rely on the global storage operation to read an object from the Move; rather, Sui must explicitly provide all the objects to the Move that require access.

Addresses represent Object IDs

There is a unique address type in Move. In Core Move, addresses are represented by this type. For shared memory operations, Core Move requires the account's address. The 16-byte address type is sufficient for the basic Move security paradigm.

Sui does not support global storage, hence an address type is not required to represent a user account. The object ID is instead represented by the address type.

Object with key ability, globally unique IDs

The ability to discriminate between things that are contained within Move objects that can cross the Move-Sui boundary and objects that can be kept in a Sui repository is necessary. This is crucial to the serialization of objects inside the Move-Sui boundary, and as a result, assumptions are made about the forms of the objects.

Mysten Labs makes use of Move's significant annotation functionality to annotate a Sui object. Lockability in Core Move refers to a type's ability to serve as a global storage key. Any key-capable struct must start with an id field of type ID, per Mysten Labs requirements. Both the ObjectID and the sequence number are contained in the ID type. To check that the ID field is immutable and cannot be given to other objects, Sui Move uses bytecode verifiers.

Module initializers

Move modules are published into the Sui storage, as stated in the Object-Centered Global Archive. A module's optionally provided special initializer function that the Sui runtime runs (once) at module publication in order to pre-initialize the module-specific data- type (e.g. create singleton objects).

Entry points take object references as input

Sui provides callable functions from other functions as well as entry functions that can be called directly from Sui.

What Makes Move Unique Over Another Programming Language?

The difference between the Move programming language and current blockchain languages will be one of the main components of the guide. What distinguishes Move as a superior option to the competition for upcoming blockchain applications? Here are a few noteworthy aspects of Move that set it apart from other blockchain programming languages.

  • For digital assets like Ether or Bitcoin, Move does not impose a preset type system.
  • The semantics of the Move programming language incorporates access control rules as well.
  • In all languages, there is a single representation of content search. Any custom content type, such as an ERC20 token, needs to be checked for the security features specified by the token's creator.
  • The restriction on the definition of custom data process types is unimportant to Move.

Final Thought

Despite being a new language, Sui has already made quite a splash in the blockchain community. While it still has some development left to go, its potential is already clear. We're excited to see what the future hold for Sui and other similar languages. Stay tuned for the upcoming postings to see the most in-depth comparisons between Move and other programming languages.

Be sure to check out Suipiens website and social media channels to stay up-to-date on all things about Sui Blockchain!

Official links about Suipiens: Website | Twitter | Discord