Как отличить отсутствие записи от нуля в 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