Если обычный платёж USDC в Stellar завершился ошибкой, проверьте точный код и trustline получателя для нужного эмитента. Отсутствие линии доверия, недостаточный лимит приёма и отсутствие авторизации эмитента — разные причины. Пополнение XLM у отправителя не исправляет автоматически ограничения на стороне получателя.
Сначала определите актив, затем меняйте лимит
У классического актива Stellar есть код и аккаунт эмитента. Именно их сочетание определяет актив, как объясняет документация Stellar. Одной надписи USDC недостаточно. Сверьте сеть и эмитента с официальным справочником Circle, затем сравните с поддерживаемыми реквизитами принимающего кошелька или сервиса. Данные основной и тестовой сетей там разделены.
Разбор относится к классическому платежу и линии доверия аккаунта. Для передачи токена через смарт-контракт, claimable balance или внутреннего баланса приложения могут потребоваться другие сведения. Не добавляйте неизвестного эмитента только потому, что поисковик показывает его токен как USDC. Совпадающий код ещё не подтверждает одинаковые права погашения и поддержку со стороны получателя.
Найдите код операции под общим сообщением об ошибке
В Stellar различаются результаты транзакции и отдельных операций. Согласно справочнику результатов транзакций, tx_failed означает ошибку одной из операций, при которой операции не применены. Более конкретный код платежа помогает определить причину. До изменения настроек сохраните исходный хеш и сообщение: без них трудно отличить проверенную причину от предположения.
| Что указано в результате | Что проверять | Кто управляет исправлением |
|---|---|---|
| PAYMENT_NO_TRUST | У получателя нет trustline нужного актива | Владелец принимающего аккаунта или сервис |
| PAYMENT_LINE_FULL | Сумма не помещается с учётом buying liabilities | Владелец принимающего аккаунта или сервис |
| PAYMENT_NOT_AUTHORIZED | Получателю не хватает авторизации эмитента | Эмитент или платформа в рамках своего процесса |
| PAYMENT_SRC_NO_TRUST | У отправителя нет нужной trustline | Отправляющий кошелёк или сервис |
| PAYMENT_NO_DESTINATION | Принимающий аккаунт не существует | Отправитель и получатель проверяют создание аккаунта |
| CHANGE_TRUST_LOW_RESERVE | Не хватает резерва для создания trustline | Владелец аккаунта, который создаёт линию |
Эти состояния разделены в описании кодов платежа. Сначала посмотрите также тип операции: у path payment свои названия результатов и дополнительные ошибки маршрута. Короткое «не удалось» в интерфейсе не даёт основания считать отсутствие trustline проблемой комиссии.
Рассчитайте доступный приём с учётом заявок
Лимит trustline ограничивает объём конкретного актива, который может занимать эту линию. Это не сумма уже внесённой оплаты. Описание аккаунтов определяет buying liabilities как обязательства по предложениям купить актив. Место, зарезервированное под такие предложения, может быть недоступно для отдельного входящего перевода. Поэтому сравнения только баланса с лимитом бывает недостаточно.
Рассмотрим полностью вымышленный пример в единицах одного актива. Лимит получателя — 500, текущий баланс — 430, buying liabilities — 50. Свободная ёмкость составляет 500 минус 430 минус 50, то есть 20. Входящий платёж на 30 не помещается, хотя разница между видимым остатком и заголовочным лимитом равна 70.
| Показатель вымышленного аккаунта | Значение | Как учитывать |
|---|---|---|
| Лимит trustline | 500 | Общий проверяемый потолок |
| Баланс актива | 430 | Уже занятая часть линии |
| Buying liabilities | 50 | Место под обязательства покупки |
| Свободный приём | 20 | Лимит за вычетом баланса и обязательств |
| Новый платёж | 30 | На 10 больше доступного места |
Расчёт проверяет вместимость, но не все условия успеха. Нужны также корректная авторизация, средства у источника, существующий аккаунт и допустимая транзакция. Между просмотром и отправкой состояние может измениться. Повышение лимита или уменьшение действительно ненужной заявки способно освободить место, однако подписывать такие изменения вслепую нельзя. Даже исправленная ёмкость сама по себе не обещает зачисление конкретного депозита на платформе.
Не смешивайте лимит USDC и резерв XLM
Создание линии доверия добавляет запись аккаунта и может повысить минимальный резерв XLM. Этот резерв отличается от разрешённого объёма USDC. В справочнике Change Trust нехватка резерва и недопустимый лимит перечислены раздельно. Изменение потолка существующей линии не означает создание ещё одной trustline только из-за увеличения суммы.
Если принимающему аккаунту не хватает места для новой записи, проверяйте именно его резерв и возможное спонсирование. Если существующая линия USDC заполнена, пополнение отправителя в XLM не увеличит её свободную ёмкость. Для самого XLM линия доверия актива не нужна. Поэтому удачный перевод XLM на адрес ещё не проверяет все условия приёма USDC этого эмитента.
Порядок проверки перед новой отправкой
- Сохраните сеть, хеш, тип операции и полный код результата. Установите, действительно ли задуманный платёж не состоялся, прежде чем заменять его.
- Сопоставьте код актива и эмитента на обеих сторонах. Не подменяйте актив другим представлением USDC или другой сетью.
- Проверьте наличие trustline получателя, её лимит, баланс, buying liabilities и статус авторизации, если источник показывает эти данные.
- Для собственного принимающего аккаунта рассмотрите нужное изменение trustline или заявки в доверенном кошельке. До подписи проверьте актив и последствия.
- Для аккаунта платформы передайте сведения её поддержке. Изменение вашего другого аккаунта не исправляет trustline сервиса.
- После исправления получите актуальные инструкции депозита и подготовьте только действительно необходимый платёж. Данные прежней попытки сохраните для сверки.
При депозитах на кастодиальный сервис успешная запись в реестре и внутреннее зачисление проверяются отдельно. После исправления лимита могут оставаться требования memo или другой маршрутизации. Если хеша нет, потому что кошелёк отказался подготовить операцию, так и сообщите поддержке. Нельзя придумывать хеш или называть неподписанную заготовку неудачной транзакцией в блокчейне.
Страница USDC помогает отделить сам актив от принимающей сети. Если позднее используете обмен без регистрации, сверяйтесь с текущими реквизитами заявки. Описание работы KOT.CASH объясняет процесс обмена; приведённая диагностика Stellar не утверждает, что любая сеть USDC и любая конфигурация аккаунта поддерживаются конкретной заявкой.
Частые вопросы
Зачем USDC в Stellar нужна trustline?
Для обычного платежа некоренным активом получателю, как правило, нужна линия доверия именно к сочетанию кода актива и эмитента. Линия для другого токена с названием USDC это требование не заменяет.
Может trustline Stellar заполниться при балансе ниже лимита?
Да, часть доступного приёма могут занимать buying liabilities по заявкам. Лимит сравнивают одновременно с балансом и этими обязательствами.
Пополнение XLM повышает лимит trustline USDC?
Резерв XLM и потолок удержания другого актива — разные величины. Пополнение нужного аккаунта может решить нехватку резерва, но само не редактирует лимит USDC.
По теме на сайте
Источники
- developers.stellar.org/docs/learn/fundamentals/stellar-data-structures/assets
- developers.circle.com/stablecoins/usdc-contract-addresses
- developers.stellar.org/docs/data/apis/horizon/api-reference/errors/result-codes/transactions
- developers.stellar.org/docs/data/apis/horizon/api-reference/errors/result-codes/operation-specific/payment
- developers.stellar.org/docs/learn/fundamentals/stellar-data-structures/accounts
- developers.stellar.org/docs/data/apis/horizon/api-reference/errors/result-codes/operation-specific/change-trust
- developers.stellar.org/docs/learn/fundamentals/transactions/list-of-operations