Как нормализовать субаккаунт по умолчанию для депозитов ICRC-1

Один счёт реестра может поступить в двух представлениях. Если использовать исходное представление как ключ базы, для одного счёта появятся два баланса.

Приведите счёт к единому виду

Включите в ключ базы идентификатор канистры реестра, байты principal владельца и субаккаунт из 32 байтов. Отсутствующий субаккаунт замените 32 нулевыми байтами. Ненулевой сохраните целиком вместе с ведущими нулями. Перед нормализацией проверьте длину внешних данных.

A = { owner = P; subaccount = null }
B = { owner = P; subaccount = 32 zero bytes }
normalized(A) = normalized(B)

Сверьте обнаруженные дубликаты

Если A и B уже записаны в разные строки, пересоберите общий остаток по уникальным операциям реестра. Сложение накопленных итогов может дважды учесть один депозит. Счета с одинаковым владельцем и субаккаунтом в разных реестрах по-прежнему учитываются отдельно.

Источники