Почему часть депозита OP Stack остаётся у отправителя L2
Пользовательский депозит нативного ETH может начислить средства отправителю L2 и передать другую сумму целевому вызову. При сверке всей суммы сразу по адресу назначения эта разница потеряется.
Разберите mint и value отдельно
Декодируйте событие портала в транзакцию депозита и проверьте отправителя, mint, цель и value. В примере при успешном исполнении без других движений отправителю начисляются три ETH, из которых два переходят получателю.
mint = 3 ETH
value = 2 ETH
sender balance before deposit = 0 ETH
Оставшийся один ETH находится у отправителя L2. Если на L1 вызывал контракт, определите фактического отправителя депозита на L2 до поиска остатка. Для контрактного депозита может применяться алиас адреса.
Учтите откат целевого вызова
Начисление происходит до снимка исполнения вызова, поэтому после отката вызова выпущенные средства могут остаться у отправителя. До сообщения о зачислении получателю проверьте квитанцию и балансы L2. Пример относится к OP-цепочке с нативным ETH. specs.optimism.io OP Stack specification