Как проследить объект монеты Sui при разделении и слиянии
Если индексатор считает ID монеты постоянным счётом, слияние выглядит потерей средств. Объект монеты содержит стоимость, а её перемещение может создать или уничтожить ID.
Определите сохранившиеся объекты
Пусть source содержит 100, а target — 20 минимальных единиц одного типа монеты. Отделение 30 оставляет 70 в source. После слияния новая сумма target равна 50. Временный payment_id по окончании join больше не относится к живой монете.
let payment = sui::coin::split(&mut source, 30, ctx);
let payment_id = object::id(&payment);
sui::coin::join(&mut target, payment);
assert!(sui::coin::value(&target) == 50, 0);
Сверьте суммы по владельцам и типам монет
Сумма двух итоговых остатков равна исходным 120. Учитывайте смену владельца отдельно от создания или удаления объекта. Если валюта SUI и один из объектов оплачивает газ, до сверки кошелька учтите соответствующие эффекты. В расчёте примера газ оплачен отдельно.