Skip to main content

Object Ownership

Every object has an owner field that dictates how you can use it in transactions. Objects can have the following types of ownership:


An address-owned object is owned by a specific 32-byte address that is either an account address (derived from a particular signature scheme) or an object ID. An address-owned object is accessible only to its owner and no others.

See Address-Owned Objects to learn more.

Dynamic fields

Dynamic fields and dynamic object fields on Sui are added and removed dynamically, affect gas only when accessed, and store heterogeneous values.

See Dynamic (Object) Fields to learn more.


An immutable object is an object that can't be mutated, transferred, or deleted. Immutable objects have no owner, so anyone can use them.

See Immutable Objects to learn more.


A shared object is an object that is shared using the 0x2::transfer::share_object function and is accessible to everyone. Unlike owned objects, anyone can access shared ones on the network.

See Shared Objects to learn more.


In Move, you can organize data structures by putting a field of struct type in another.

See Wrapped Objects to learn more.