Внутренние транзакции Ethereum: где найти полученные ETH
Контракт может отправить ETH в ходе другой транзакции. Найдите перевод по её хешу и разберитесь, чем эта запись отличается от текущего нативного баланса.
ETH, отправленные контрактом, могут поступить на ваш адрес без отдельной записи в обычной истории кошелька. В основной сети Ethereum Mainnet найдите перевод во вкладке Internal Txns обозревателя и откройте его родительскую транзакцию. Сверьте получателя, сумму в нативных ETH и результат выполнения, прежде чем считать перевод успешным.
Само по себе отсутствие строки не доказывает пропажу денег. Актуальная справка MetaMask описывает это ограничение истории и отмечает, что полученные средства отражаются на балансе аккаунта. Это документированное ограничение отображения, а не проверка вашего кошелька или доказательство конкретного платежа.
Что означает внутренняя транзакция
Подписанная транзакция может вызвать контракт, а тот может отправить ETH во время выполнения своего кода. Получатель такого внутреннего перевода может отличаться от адресата, указанного вверху страницы транзакции.
Документация Solidity поясняет: вызов между контрактами относится к общей транзакции и не создаёт собственной новой транзакции. Внутренняя запись обозревателя указывает на действие в ходе её выполнения. Отдельной подписанной транзакции только для этого перевода ожидать не следует.
«Внутренняя» не означает, что средства находятся вне блокчейна, скрыты или заблокированы. Полученные ETH входят в нативный баланс адреса. При подсчёте средств сумму внутреннего перевода не прибавляют к этому балансу ещё раз.
Как найти входящий перевод ETH
Используйте полный адрес получателя и хеш исходной транзакции, если он у вас есть. Откройте знакомый обозреватель проверенным способом. Для этих проверок по публичным данным не нужно подключать кошелёк, что-либо подписывать или сообщать фразу восстановления.
- Выберите Ethereum Mainnet и адрес получателя. Проверка такого же адреса в другой сети относится к другому балансу. Убедитесь, что ожидаемый актив именно нативные ETH. У ETH и WETH раздельные балансы.
- Откройте Internal Txns на странице адреса. Etherscan отделяет переводы ETH через контракты от обычных транзакций и записей о переводах токенов. Найдите подходящую запись по ожидаемому времени и сумме, затем откройте хеш родительской транзакции. Если хеш уже известен, изучите связанные с ним внутренние переводы.
- Сверьте получателя внутреннего перевода и сумму. Сравните полный адрес назначения с нужным адресом получателя. Смотрите сумму в нативных ETH, а не оценку в долларах или токен с похожим названием. Вызов с нулевой суммой не является платежом с положительной суммой ETH.
- Проверьте ошибки и откат. Изучите результат родительской транзакции и отметки об ошибках или откате на соответствующем пути вызовов. Одной видимой попытки перевода недостаточно: последующий откат во внешнем вызове, содержащем этот перевод, может его отменить. Если обозреватель не позволяет это выяснить, сохраните отметку о неопределённости, а не считайте сумму полученной.
- Отдельно проверьте текущий нативный баланс. Запишите блок или время, к которому относится запрос. Это помогает установить текущий объём средств, но последующие переводы или другие действия могли изменить баланс после найденной транзакции.
Сохраните вместе сеть, хеш родительской транзакции, блок, получателя, сумму и все признаки ошибок. Когда данные расходятся, у поддержки кошелька или протокола будет конкретная публичная запись для проверки.
Необработанная трассировка вызовов не равна списку платежей
Обозреватель может восстановить ход выполнения в виде трассировки: дерева вызовов. Трассировщик вызовов Geth включает типы вызовов, адреса, суммы, вложенные вызовы и ошибки. Эти поля нужно читать с учётом контекста.
Не складывайте все суммы в этом дереве. Например, адрес назначения DELEGATECALL указывает на исполняемый код, а не на нового получателя платежа в ETH. Списки переводов в обозревателе также могут отбирать лишь часть исходных вызовов, поэтому перечень внутренних переводов не обязательно является полной трассировкой.
Откат ещё раз показывает, почему нужно читать весь путь вызовов, а не одну строку. Документация Solidity об обработке ошибок объясняет, что исключение может отменить изменения в вызове и его вложенных вызовах. Успешная родительская транзакция всё равно может содержать неудачную внутреннюю попытку, ошибка которой была обработана.
Если вы ожидали токен ERC-20, воспользуйтесь отдельной инструкцией об успешной транзакции и переводе токенов. Найденная запись о внутреннем переводе ETH не подтверждает получение этого токена.
Различайте баланс и запись в истории
Запрос нативного баланса Ethereum читает баланс адреса для указанного блока или метки блока. Текущий баланс не показывает, какая транзакция его сформировала. Даже разница балансов между двумя блоками может включать несколько транзакций. Неудачный запрос или отсутствующая трассировка означают недоступные данные, а не нулевой баланс и не доказательство того, что перевода не было.
Owlio 1.1.0 считывает текущий нативный баланс ETH для добавленного вами адреса Ethereum без подключения кошелька или подписания транзакции. Родительскую транзакцию и её внутренние переводы изучайте в обозревателе: число в портфеле не объясняет этот путь вызовов. Списки адресов хранятся локально, а поставщики данных могут видеть запрашиваемый адрес и ваш IP, как описано в политике приватности.
Для аккаунта на бирже возникает отдельный вопрос: зачислил ли сервис средства на внутренний счёт клиента. Получение средств на депозитный адрес в блокчейне не подтверждает такое зачисление. Проверьте текущие правила пополнения сервиса и данные обращения в поддержку, а не считайте, что объяснение истории кошелька решает и этот вопрос.
Само отсутствие строки в обычной истории не требует дополнительного получения средств через claim или разблокировки. Если для вывода из протокола ещё нужен claim, это другой процесс, который следует проверить по его документации. Не отправляйте ещё один платёж только ради появления записи в истории. Эти проверки основаны на первичной документации, изученной 6 ноября 2026 года; реальный перевод для этой статьи не проводился.
Частые вопросы
ETH, полученные через внутреннюю транзакцию, это другой токен?
Нет. Успешный перевод нативных ETH влияет на баланс ETH адреса получателя. Слово «внутренняя» описывает способ перевода в ходе выполнения кода, а не отдельный токен или скрытый баланс, который нужно прибавить ещё раз.
Означает ли Internal Txns, что мой перевод ещё ожидает подтверждения?
Нет. Это категория в обозревателе, а не статус подтверждения. Проверьте включение родительской транзакции в блок и её результат, а также то, не был ли нужный внутренний перевод отменён откатом.
Почему внутренний перевод ведёт к тому же хешу транзакции?
Он произошёл внутри этой родительской транзакции. Внутренний вызов контракта не создаёт новую отдельно подписанную транзакцию. Обозреватель может различать вызовы в рамках одного выполнения по индексу в трассировке.