归属对象

从所有权的角度来看,Sui 对象可以分为两种类型:

  • 归属对象
  • 共享对象

一个归属对象的所有者可以是一个地址或另一个对象。

1. 由地址拥有

当我们将一个新建的对象转移到一个地址时,该对象将由该地址拥有。

示例是我们在上一课“创建对象”中使用的代码:

// 将城堡对象转移给所有者。
let owner = tx_context::sender(ctx);
transfer::public_transfer(castle, owner);

由地址拥有的对象不能被除所有者之外的其他人修改或删除。只有城堡的所有者可以将城堡转移给其他人或更新城堡的属性。

2. 由对象拥有

当使用 dynamic_fielddynamic_object_field 时,会出现对象所有的对象。 例如,在课程“动态字段 - 存储城堡数据”中,我们使用 sui::dynamic_field 将城堡数据存储到 GameStore 中。 当一个城堡被建造时,其对应的 CastleData 将由一个类型为 dynamic_field::Field 的对象包装,并由 GameStore 对象拥有。

构建城堡时创建的不同类型的对象: object