Join Sui Overflow, Sui's first global hackathon →

Move

A new era of smart contract programming

Secure by default
Intuitive by design
Expressive by nature

A blockchain-agnostic language offering significant advancements in security and productivity. Move drastically reduces the Web3 learning curve and enables a developer experience of unprecedented ease.

Why Move was created

Move was originally developed for the Diem blockchain. Based on Rust, it was designed to be a universal language targeting the unique qualities of smart contract programming. Move's first class abstractions for the concept of assets, transfers, and access control make for safer and more efficient programming.

Sam Blackshear

Creator of Move, Co-founder of Mysten Labs, Original contributor to Sui
“On a computer, everything is just bits and bytes and can be freely copied. You want a language that gives you the necessary abstractions around ownership and scarcity, just like in the physical world. You want those basic safety guarantees. That's what Move does and why we created a new language. These things are hard to recreate in other languages, including existing smart contract languages, and we wanted to design the entire language around providing these primitives so programmers can write code safely and efficiently and not have to reinvent the wheel every time they want to write some code.”

Move on Sui

Move has evolved significantly from its origins in the Diem project to its modern form in Sui, offering "win-win abstractions" that simultaneously give programmers more expressive power while making the execution layer more efficient. The object data model improves security and enables scale. Developers can use objects, a natural representation of Web3 building blocks, intuitively throughout the development stack. With unfettered flexibility to compose functions and create rich object hierarchies, Move on Sui allows for unparalleled creativity, experimentation, and developer experience.
“In Move[-on-Diem], we had an account based data model where assets live under an account, and the developer has to explicitly grab them. In Sui, developers come into the Move part of the transaction with assets already fetched by the Sui runtime. That’s nicer for the developer, because they don't have to do all this before and after bookkeeping, but also this is the secret sauce that allows us to see whether a transaction can be run in parallel with another transaction without actually executing it, to scale Sui horizontally, and to do a number of other things more efficiently.”

Key features

Object Data Model

“Most things in life are objects,” especially assets managed by real-world contracts. With the object data model on Sui, smart contracts mirror that reality. Object types, ownership, transfers, and display are native features. Objects are a common vocabulary throughout the stack, simplifying apps, wallets, explorers, and the overall developer experience.
Explore docs

Programmable Transaction Blocks [PTBs]

PTBs enable rich, but safe (no re-entrancy or dynamic dispatch) code composability. A single Sui transaction can call up to 1024 separate Move functions, either homogeneously for mass batching or heterogeneously where typed objects serve as inputs to the next calls. Highly expressive, heterogeneous PTBs move composition from the smart contract level to the transaction level, significantly improving gas efficiency and code simplicity.

Dynamic Fields

Dynamic fields enable safe data composability. Add or remove object fields on the fly, link objects together, and organize data via intuitive object hierarchies.

Ironclad Security

Five out of the OWASP top 10 vulnerabilities are not possible in Move and 3 are partially mitigated. Classic wallet drainer attacks that exploit contract-level permissions are also not possible as all assets are protected by the account’s private key. Smart contract packages are immutable objects, preventing accidental or intentional changes to commonly referenced packages that could have network-wide security implications.

The best Web3 builders love Move

"Scallop’s XOracle demonstrates the value of PTBs. Operations execute atomically and dynamically. Transactions combine every required action and are built dynamically. Move on Sui provides type safety, aiding in the construction of safer dynamic functions.

Without PTBs and Sui’s object-centered design, XOracle would be significantly more complex and harder to build safely."

Kris Lai
Founder of Scallop

“Move on Sui allows us to do what other languages don't: combine transactions and customize atomic transaction blocks. Large order swaps that require interacting with multiple pools can take place in one transaction directly from the user interface. Programming difficulty is also significantly reduced, making Sui a perfect network for intent-based trading and interactions.”

Cetus

"Move on Sui offers a best-in-class developer experience. It allowed us build and test Suilend significantly faster than expected, meaning our product is likely to get to market ahead of schedule."

Suilend

“At Aftermath, we take full advantage of the novelties of Sui. The object model native to Sui Move allows us to focus on a safety-first design when developing our products. We leverage programmable transactions to power all of Aftermath, allowing us to abstract complex strategies into one simple-to-execute transaction. The end result is an improved experience for both our users and developers.”

Aftermath

The best Web3 builders love Move