Skip to main content
Abilities in Move are constraints on types that control what operations can be performed on them. They’re fundamental to Move’s resource safety guarantees.

The Four Abilities

copy

Type can be copied by value

drop

Type can be safely discarded

store

Type can be stored inside structs

key

Type can be a top-level object

Copy Ability

Types with copy can be duplicated:
Objects with UID cannot have copy ability because UIDs must be unique.

Drop Ability

Types with drop can be ignored or discarded:

Store Ability

Types with store can be:
  • Stored in other structs
  • Transferred with public_transfer
  • Stored in global storage

Key Ability

Types with key can be top-level Sui objects:
Types with key must have id: UID as their first field.

Common Combinations

Ability Constraints in Generics

Phantom Type Parameters

Best Practices

Only grant abilities that are necessary:

Move Overview

Learn Move basics

Objects

Understand Sui objects

Ownership

Object ownership rules