地址关联规则
GroupDefaults 维护的是一份“地址 -> 默认 groupId”的附加记录。
这里的 groupId 就是某个具体 NFT 的编号。
它的作用是让一个地址声明“我当前默认使用哪个 groupId 对应的 NFT”,便于前端做身份展示和默认上下文选择。
它不改变 NFT 所有权,也不影响 NFT 的转让。
基本规则
- 只有当前持有某个
groupId对应 NFT 的地址,才能把它设为自己的默认groupId - 一个地址同一时刻最多只能关联一个默认
groupId - 重新设置新的
groupId时,旧的默认值会被直接覆盖 - 地址可随时主动清除默认关联
- 默认关联不会随着 NFT 转让而自动转移给新持有人
转让后的行为
- 如果地址之前把某个
groupId设为了默认值,之后又把该 NFT 转出,那么这条默认关联会立即失效 - 失效后,查询
defaultGroupIdOf(address)会返回0 - NFT 的新持有人不会自动继承这条默认关联
- 新持有人如果希望把该 NFT 设为自己的默认值,需要自行调用
setDefaultGroupId
查询语义
defaultGroupIdOf(address account)返回该地址当前仍然有效的默认groupId- 返回
0表示当前没有有效默认值 - 返回
0的常见原因有:从未设置、已主动清除、之前设置过但对应 NFT 已转出
常见失败情况
- 设置一个不存在的
groupId会失败 - 非当前持有人设置某个
groupId会失败 - 重复设置相同的默认
groupId会失败 - 在从未设置过默认值、或已经主动清除过默认值时,再次执行清除会失败
- 如果之前设置过默认值,但对应 NFT 已转出导致查询结果变为
0,仍可执行清除,用于删除这条失效的存储记录
合约行为
- 设置默认关联:
setDefaultGroupId(uint256 groupId) - 清除默认关联:
clearDefaultGroupId() - 查询默认关联:
defaultGroupIdOf(address account) - 绑定的 NFT 合约地址:
GROUP_ADDRESS()