Как читать передачу стоимости в трассе нативной EraVM без двойного учёта

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

Проследите путь имитации передачи стоимости

Определите отправителя и целевой адрес приложения, затем изучите этап MsgValueSimulator. В нативной EraVM системные контракты применяют изменение баланса и вызывают получателя с нужным call value. Для отладки сохраняйте и намерение приложения, и системные кадры.

application call with value → MsgValueSimulator → target call

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

Проверьте исход и режим

Откат вызова способен отменить перевод. Сопоставьте квитанцию, результаты вложенных вызовов и изменения состояния в одной точке исполнения. Разные трассировщики и EVM-интерпретатор могут показывать кадры иначе: одного отображаемого имени для фильтра недостаточно. docs.zksync.io ZKsync documentation