Как отличить отсутствие записи от нуля в Map хранилища Cairo

Чтение никогда не записанного ключа из карты беззнаковых сумм возвращает нулевое значение. По нему нельзя отличить неизвестный адрес от зарегистрированного счёта, потратившего весь баланс.

Воспроизведите неоднозначное чтение

В тестовом контракте зарегистрируйте A, начислите средства и полностью спишите их. B оставьте нетронутым. Прочтите карту штатными методами хранилища: для обоих адресов сумма равна нулю.

credits[A] = 0  // registered account, no credit
credits[B] = 0  // address never registered

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

Заранее предусмотрите перечисление

Storage Map не ведёт итерируемый список ключей. Для перечисления зарегистрированных счетов поддерживайте отдельный индекс либо собирайте кандидатов по событиям и проверяйте актуальное членство. Одно чтение суммы набор не восстановит. starknet.io The Cairo Programming Language