Почему обратный вызов конструктора EraVM возвращает пустые данные
Нативный контракт EraVM ведёт себя иначе во время работы конструктора. Реестр, вызванный из конструктора, может не получить ответ обычного геттера по обратному вызову на новый адрес.
Проследите вызов до завершения создания
Найдите внешний вызов из конструктора в B и обычный обратный вызов B в A. EraVM помечает хеш кода аккаунта как находящийся в создании. Обычному вызову без признака конструктора подставляется поведение стандартного аккаунта вместо выполнения точки входа A.
constructor of A → calls B → B calls back into A
A still has the constructing code-hash marker
Если B ожидает типизированный ответ, пустые данные вызовут ошибку ABI-декодирования. Повторите геттер после развёртывания: успешный ответ укажет на различие контекста создания.
Передайте необходимые сведения при регистрации
Когда архитектура позволяет, передайте проверенные начальные данные прямо в B либо зарегистрируйтесь после готовности A. Для нового порядка проверьте полномочия и повторный вход. Успешный низкоуровневый вызов с пустым ответом не подтверждает исполнение геттера. docs.zksync.io ZKsync documentation