Skip to main content

Sui 物件 (Sui Objects)

在 Sui 中,key 用於表示一個物件。物件是在 Sui 中儲存資料的唯一方式,讓資料能在交易之間持續存在。

如需更多詳細資料,請參閱 Sui 文件中的:

物件規則 (Object Rules)​

物件是具有 key 能力的 struct。結構的第一個欄位必須是 id: sui::object::UID。此 32 位元組欄位(address 的強型別包裝)會用於唯一識別該物件。

請注意,由於 sui::object::UID 僅具有 store 能力(不具有 copy 或 drop),因此沒有任何物件具有 copy 或 drop。

轉移規則 (Transfer Rules)​

物件可以在 sui::transfer 模組中變更其擁有權並進行轉移。模組中的許多函式都有「公開」與「私有」變體,其中「私有」變體只能在定義物件型別的模組內呼叫。「公開」變體則只有在物件具有 store 時才能呼叫。

例如,假設我們在模組 my_module 中定義了兩個物件 A 與 B:

module a::my_module;

public struct A has key {
id: sui::object::UID,
}

public struct B has key, store {
id: sui::object::UID,
}

A 只能在 a::my_module 內使用 sui::transfer::transfer 進行轉移,而 B 可在任何位置使用 sui::transfer::public_transfer 進行轉移。這些規則由 Sui 中的自訂型別系統(位元碼驗證器)規則強制執行。