The Sui network runs Sui Move as its native programming language. Apps coded with Sui Move leverage Sui's consensus mechanism to achieve impressive transaction performance.
However, developers familiar with the Move programming language may find themselves confused when exploring the Sui documentation. The focus on objects and some instructions won't necessarily fit their experience.
These differences come from the fact that Sui Move evolved from Move as a means of better meeting the needs of a new, highly performant blockchain.
First and foremost, Move focuses on smart contracts. It includes types and value representations for assets and access control, two fundamental concepts that blockchain app developers code for regularly. Move's first class abstractions for these concepts make for safer and more efficient programming.
Move was released in 2020 and is currently licensed under the Apache 2.0 open source license. It's used on the Aptos, StarCoin, 0L, Rooch, Movement, and Offshore networks.
Transition to Sui Move
The Libra project focused on building a next generation payments platform, using blockchain technology to support a digital currency. Move's design supported that effort. Similar to other blockchain technologies, it includes an account-based data model, with digital assets owned by accounts.
When Sam and his colleagues at Mysten Labs set their sights on building Sui, they focused on a more generalized network infrastructure rather than the more limited scope of the Libra project's Diem blockchain. And while Move is platform-agnostic, a desirable quality, it was limited by the account-focused model.
Sui Move was designed as a fork of Move to better complement Sui's innovations, such as its consensus model. Last year Sam went into detail about Move versus Sui Move in an article titled Why We Created Sui Move, showing comparative code samples demonstrating Sui Move's elegance and expressivity. Sui Move's fundamental difference versus Move was to introduce an object-based data model.
Focusing on objects in this manner enables parallel transaction processing, which allows much better performance than blockchains that can only do serial processing. At a high level, the Sui runtime can directly determine single-owner versus shared objects, sending the former through for instant validation and applying consensus validation for the latter.
From a developer standpoint, Sui eliminates the need to do a lot of bookkeeping concerning asset ownership before and after a transaction. Where original Move keys global storage by address and type name pairs, Sui Move uses an object ID to key global storage. Giving objects this kind of first class standing enables a world of possibilities, such as composability, where objects can own other objects.
Code with Sui
Move and other blockchain languages were strongly influenced by a cryptocurrency legacy, which focused more on asset ownership, leading to them being account-focused, rather than the assets themselves. The Sui Move fork allows for much more flexibility in creating and manipulating assets, opening the door to the kinds of robust programs and games that the general public has come to expect.
Developers who embrace original Move will add a very useful, portable language to their toolbox. Taking the step into Sui Move will require thinking in terms of objects and learning some new instructions, but tools such as the Sui Move Analyzer and the WELLDONE Code plug-in can ease the move.