Короткий ответ: у перевода USDC через CCTP нужно отдельно проверить три события: успешную транзакцию на исходной сети, готовность сообщения и attestation в Circle IRIS, затем подтверждённый выпуск токена в целевой сети. Статус первой транзакции сам по себе не подтверждает зачисление на другой стороне.
Какие данные нужны для проверки
Сохраните хеш транзакции отправки, названия исходной и целевой сетей, адрес получателя и примерное время операции. Если перевод выполнялся приложением или биржей, сохраните также его идентификатор и выбранный маршрут. Это не секретные данные: хеш и публичные адреса можно показывать поддержке, но никогда не отправляйте seed-фразу, приватный ключ, пароль или одноразовый код.
Откройте хеш в обозревателе именно исходной сети. Сверьте сеть, отправителя, получателя и сумму. В деталях транзакции важно найти успешный вызов CCTP и событие отправленного сообщения. В зависимости от версии и реализации названия событий и контрактов различаются, поэтому сопоставляйте их с официальной документацией Circle для конкретной сети, а не только с похожим названием токена в кошельке.
Если хеш не открывается в обозревателе выбранной сети, сначала проверьте, не перепутаны ли сеть и транзакция вывода. Один и тот же формат адреса в двух EVM-сетях не делает их одной сетью. Подробная предварительная проверка маршрута описана в статье как проверить маршрут USDC через CCTP.
Что означает статус в Circle IRIS
Для интеграций CCTP v2 Circle публикует API сообщений IRIS. По хешу исходной транзакции приложение запрашивает сообщения соответствующего исходного домена; в запросе нельзя подменять домен номером другой сети. Для production и тестовой среды используются разные адреса API. Пользователь обычно видит результат в интерфейсе сервиса, но разработчик может сопоставить его с ответом Circle.
Статус pending_confirmations означает, что сообщение обнаружено, но attestation ещё ожидает необходимого подтверждения. Это не то же самое, что отказ, и не подтверждение выпуска токена. Состояние complete означает, что attestation доступна для дальнейшего шага. В ответе могут присутствовать само сообщение и криптографическая подпись attestation. Интерфейс кошелька может показывать эти этапы своими словами, поэтому нужно смотреть, какой именно факт он сообщает.
Не считайте появление attestation автоматическим зачислением. Она позволяет вызывающему приложению передать сообщение в контракт MessageTransmitter целевой сети. После исполнения этого шага транзакция на принимающей стороне должна быть включена в блок и не иметь ошибки. Общее описание сжигания и последующего выпуска USDC приведено в материале как работает Circle CCTP.
Проверьте завершение на принимающей сети
Найдите транзакцию исполнения сообщения в обозревателе целевой сети. Убедитесь, что она завершилась успешно и относится к ожидаемому сообщению, получателю и токену. Затем проверьте баланс адреса именно в этой сети. Обновление интерфейса кошелька может задержаться, поэтому при расхождении ориентируйтесь на обозреватель и адрес контракта нативного USDC для выбранной сети.
У разных приложений различается способ исполнения. В одном перевод ретранслирует сам сервис, в другом пользователь получает сообщение и инициирует следующий шаг. Если сервис показывает «завершено», а транзакции в целевой сети нет, запросите у него точный хеш исполнения и выясните, что именно означает эта метка. Не повторяйте отправку до выяснения судьбы первого перевода.
Удобно мысленно разделить маршрут на три независимых доказательства: квитанция исходной сети, запись о готовой attestation и транзакция получения в целевой сети. Такая схема помогает понять, на каком участке искать проблему, вместо того чтобы сравнивать один общий индикатор прогресса.
Если статус долго не меняется
Повторно проверьте исходный домен, транзакционный хеш и окружение API. Тестовая транзакция не появится в production-ответе, а данные из другого исходного домена не найдутся по правильному хешу. Посмотрите, содержит ли исходная транзакция нужное событие CCTP; перевод похожего токена через иной мост не становится CCTP только потому, что в обеих сетях отображается USDC.
Если IRIS показывает ожидание, не делайте вывод, что средства уже доступны получателю. Сверьте выбранный маршрут и параметры с интерфейсом приложения, проверьте официальные сообщения о техническом состоянии сервиса и используйте предусмотренную им поддержку. У Circle есть отдельные механизмы для некоторых сценариев повторной attestation, но их применимость зависит от конкретного сообщения и состояния перевода. Не отправляйте случайный запрос к контракту по совету из чата.
Когда API не находит сообщение, а исходная транзакция подтверждена, сохраните её хеш, сеть и данные события и обратитесь к приложению, которое инициировало перевод. Сторонний обозреватель не может создать attestation или восстановить перевод. Для двухэтапного моста, отличного от CCTP, порядок проверки другой; объяснение есть в статье почему у перевода через мост бывает два TxID.
Типичные ошибки и безопасный порядок действий
- Не путайте подтверждение burn-транзакции с mint-транзакцией в другой сети.
- Не используйте сеть из названия кошелька без проверки исходного chain ID или обозревателя.
- Не публикуйте данные авторизации и не вводите seed-фразу на сайте «проверки CCTP».
- Не оплачивайте «разблокировку attestation» частному помощнику.
- При обращении в поддержку передайте публичные хеши обеих сетей, адрес назначения и снимок статуса без секретных данных.
Проверка должна заканчиваться наблюдаемой транзакцией в целевой сети и ожидаемым балансом. Если у вас есть только успешная запись на исходной стороне, перевод прошёл не все стадии. Если attestation готова, но mint-транзакции нет, нужно выяснить, кто отвечает за её исполнение и есть ли ошибка в целевой сети.
Итог
Для CCTP проверяйте маршрут последовательно: подтверждение исходной операции, состояние сообщения Circle и результат исполнения в целевой сети. Сверяйте сети и адрес получателя на каждом шаге. Это позволяет отличить обычное ожидание подтверждений от сбоя индексации или неисполненного сообщения и передать поддержке проверяемые данные, не подвергая кошелёк риску.



