Move (language)
By Meta (originally, for Diem); now maintained by Move-based blockchain communities
Move is a resource-oriented programming language for writing smart contracts, originally created for Meta's Diem blockchain project and now used by blockchains such as Aptos and Sui. It treats digital assets as first-class "resource" types…
Definition
Move is a resource-oriented programming language for writing smart contracts, originally created for Meta's Diem blockchain project and now used by blockchains such as Aptos and Sui. It treats digital assets as first-class "resource" types that the language's type system guarantees cannot be accidentally copied, duplicated, or discarded, directly addressing bugs that have caused major losses on other smart contract platforms.
Overview
Move was designed in response to a recurring category of smart contract vulnerability seen on platforms like Ethereum, where assets represented as ordinary numeric balances in contract storage could be duplicated, lost, or manipulated due to reentrancy bugs, integer overflow, or logic errors, because the underlying language treated tokens no differently from any other data. Move's designers set out to make an entire class of these bugs structurally impossible by encoding asset semantics directly into the type system. Mechanically, Move introduces resource types, which are ordinary structs annotated so the compiler enforces linear-logic-like rules: a resource value cannot be copied, and it must be explicitly consumed, transferred, or stored, but it can never simply vanish or duplicate through carelessness. This means a token balance represented as a Move resource cannot be doubled by a bug the way an integer could be, because the compiler statically rejects any code path that would copy or drop the resource without accounting for it. Move also compiles to a custom bytecode that is verified before execution, adding a runtime safety layer on top of the compile-time guarantees. Among smart contract languages, Move differs sharply from Ethereum's Solidity, which treats balances as regular mutable state with no special type-level protection, relying instead on programmer discipline and external auditing to prevent asset-handling bugs. Move's resource model is more closely related in spirit to linear type systems from academic programming language research, applied here specifically to the problem of digital asset safety, giving it a narrower but more rigorously enforced feature set than general-purpose smart contract languages. In practice, Move is used as the smart contract language for the Aptos and Sui blockchains, both of which descend architecturally from the original Diem project after Meta discontinued it, as well as smaller Move-based chains. Developers use it to write token standards, decentralized exchange logic, and other on-chain applications where the resource-safety guarantees reduce a specific, historically expensive class of exploit. Move's limitations are mostly about ecosystem maturity and adoption rather than the language design itself: it has a smaller developer community, fewer libraries, and less tooling than Solidity, which remains the dominant smart contract language by sheer volume of deployed contracts and available auditors. Its resource-oriented model also imposes a different mental model on developers used to conventional object-oriented or functional languages, requiring some retraining even for experienced blockchain engineers moving from Ethereum-style development, though that retraining is generally viewed as a worthwhile cost for the safety guarantees it buys.
Key Features
- Resource types that the compiler prevents from being copied or dropped
- Static type-checking that eliminates entire classes of asset-handling bugs
- Custom verified bytecode executed after compile-time safety checks
- Originally designed for Meta's now-discontinued Diem blockchain
- Powers smart contracts on the Aptos and Sui blockchains
- Module system enabling reusable, auditable on-chain code
- Linear-logic-inspired semantics applied to digital asset safety
- Formal verification tooling supporting provable contract properties
Use Cases
Alternatives
Frequently Asked Questions
From the Blog
How to Move From Support to Software Engineering
Support roles are a hidden launchpad into engineering. Learn how to convert your product and troubleshooting skills into a developer career step by step.
Read More AI & TechnologySAT Prep Tips That Actually Move Your Score
Effective SAT prep means practicing full-length timed tests, reviewing every mistake, and targeting your weakest section instead of studying everything equally. Here are the study habits that reliably raise scores.
Read More ProgrammingSoftware Developer Salary: What Actually Drives Pay
Software developer pay depends on far more than a job title. This guide breaks down the real factors that move compensation up or down and shows practical ways to grow your earning potential over time.
Read More ProgrammingHow to find what is blocking the Node.js event loop
Latency that spikes across every endpoint at once is the signature of a blocked event loop, not a slow dependency. Measure loop delay to confirm it, capture a CPU profile of the blocked window to locate the synchronous frame, then move that work off the loop.
Read More