Как сохранить видимость вложенного предмета Sui по ID

Инструмент может принадлежать стойке и сохранять отдельную идентичность для внешнего клиента. Видимость предмета зависит от выбора динамического объектного или обычного динамического поля.

Прикрепите предмет как объектное поле

Предположим, Tool имеет способности key и store, а модуль стойки управляет её UID. Сохраните ID инструмента перед перемещением. Заимствование по типизированному номеру гнезда подтверждает, что прикреплён тот же объект.

use sui::dynamic_object_field as children;
let child_id = object::id(&tool);
children::add(&mut rack.id, 1u8, tool);
let stored = children::borrow<u8, Tool>(&rack.id, 1u8);
assert!(object::id(stored) == child_id, 0);

Разделите видимость и право перемещения

Внешний наблюдатель может отслеживать прикреплённый инструмент по ID. Для снятия в Move всё равно нужен изменяемый доступ к стойке и правильное имя поля. Интерфейс должен включать выдачу по правилам родителя. Сам по себе видимый ID не даёт полномочий на вывод.

Источники