Types of Object Ownership
Every object has an owner that determines who can use it in transactions and whether the object is versioned on the fastpath or through consensus.
| Ownership type | Access model | Versioning path |
|---|---|---|
| Address-owned | A single address can use the object. | Fastpath |
| Shared | Any address can use the object, subject to Move checks. | Consensus |
| Immutable | Any address can read the object; no one can mutate it. | Fixed after it becomes immutable |
| Wrapped | Only accessible through the object that wraps it. | Depends on the wrapper |
| Consensus-address owned / party | A single address owns the object, but the object is sequenced by consensus. | Consensus |
APIs expose consensus-address-owned objects with a ConsensusAddressOwner owner variant. Party objects are the public Move-facing way to create this ownership form with sui::party::Party and sui::transfer::party_transfer or sui::transfer::public_party_transfer. Use them when you want single-address ownership with consensus sequencing, for example to allow multiple inflight transactions against the same logical object without fastpath locks.
Learn about different types of object ownership on Sui.
Address-Owned Objects
Address-owned objects are owned by a Sui 32-byte address, which can either be an account address or an object ID. Learn how to create and access these objects.
Shared Objects
Anyone can access shared objects on the Sui network, so care must be taken to secure access, if needed.
Immutable Objects
Immutable objects cannot be changed, transferred, or deleted. Immutable objects cannot have an owner and anyone can use them.
Wrapped Objects
Wrapped objects are object data structures nested inside of another object data structure. Objects can be wrapped directly, through `Option`, or through `vector` fields.
Party Objects
Party objects are owned by a specified party at the time of transfer and versioned by consensus. Learn how to create and access these objects.