Secure, efficient language for apps that scale
Move ushers in a new era of smart contract programming
Why Move was created
Move was originally developed for the Diem blockchain. 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.

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.
For smart contracts, 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...we wanted to design Move 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.
Key features
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.

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.
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.


