BadInputsUTxO означает, что выбранный вход недоступен в состоянии UTXO, по которому проверяется транзакция. Частая причина — уже потраченный выход, но возможны неправильная ссылка или ещё неизвестный данному состоянию результат предыдущей операции. Проверьте прежние попытки и точный вход до создания другого платежа. Общего положительного баланса для объяснения ошибки недостаточно.
Баланс не является списком повторно доступных входов
Транзакции Cardano расходуют определённые непотраченные выходы и создают новые. В объяснении EUTXO описана их однократная доступность. Кошелёк может показывать положительную общую сумму, когда выбранный раньше вход уже недоступен. Оставшиеся средства находятся в других выходах, в том числе в сдаче предыдущей операции. Это нужно проверять на уровне записи.
Сохраните ссылку на вход, а не только адрес. Она определяет конкретный выход прежней транзакции. Ошибочный индекс поэтому способен указывать совсем не на ожидаемый объект. Знакомый адрес и достаточное количество ADA ссылку не исправляют. Если интерфейс не показывает подробности, сохраните точный ответ для поддержки вместо ручной замены цифр наугад.
В обычном процессе входы выбирает приложение. Если оно подготовило два платежа по одному снимку, они способны конкурировать за выход. Две вкладки или недавно завершённая операция объясняют устаревший выбор. Это повод сравнить попытки, а не немедленное доказательство кражи. Установите, какие транзакции действительно были переданы и приняты, прежде чем оценивать оставшийся остаток.
Классифицируйте недоступность входа
| Что найдено | Возможное объяснение | Следующая проверка |
|---|---|---|
| Выход потрачен прежним платежом | Выбор устарел | Выполнено ли уже ожидаемое получение |
| Два черновика используют один выход | Запросы конфликтуют | Какая попытка принята или подтверждена |
| Неправильный индекс выхода | Неверна ссылка | Реальные выходы первоначальной транзакции |
| Зависимый выход пока неизвестен | Неясны родительская операция или источник данных | Его отправка и текущее состояние |
| Провайдер показывает потраченный выход | Данные ещё не обновились | Согласованное актуальное состояние |
| Ссылка из другой сети | Выбрано другое состояние реестра | Сеть кошелька и провайдера |
| Видна только общая ошибка | Не установлен конкретный вход | Точная диагностическая запись |
В актуальном руководстве ошибок потраченные входы и конкурирующие сборки названы типичным случаем BadInputsUTxO. В справке узла отдельно указан неправильный UTXO index. Не сводите все недоступные входы к одной причине до чтения ссылки. Разные объяснения требуют разного исправления.
Выясните, не состоялся ли предыдущий платёж
Сохраните первоначальные идентификаторы и проверьте движение нужному получателю. Если ранняя попытка уже оплатила назначение, новый собранный платёж создаст дополнительное получение. Отказ позднего конфликтующего запроса не отменяет предыдущий. Поэтому последнее окно ошибки не описывает всю историю. Сопоставляйте результат с тем обязательством, ради которого первоначально готовили перевод.
Если родительская операция пока не разрешена, определите её состояние до выбора предполагаемых новых выходов. В руководстве сборки транзакций рассматриваются задержка провайдера и зависимые операции. Короткую оценку времени примера нельзя превращать в обещание синхронизации. Важно фактическое состояние источника и доступность конкретной ссылки, а не только прошедшие секунды.
Отсутствие результата одного обозревателя также не требует повторять подпись многократно. Сверьте сеть, исходный хеш и историю отправляющего приложения. Если неясно, был ли платёж, оставьте результат неустановленным и обратитесь в официальную поддержку. Несколько новых идентификаторов не устраняют неопределённость первого. Они делают разбор сложнее и способны привести к дублирующим поступлениям.
Пересборка отличается от пересылки прежних данных
Подписанная транзакция относится к входам, выбранным при подготовке. Повторная подпись либо публикация того же тела не делает потраченный выход непотраченным. После выяснения раннего результата новая сборка может выбрать актуальные выходы. Но её нужно заново проверить: получатель, актив, сумма, сдача и расходы остаются существенными параметрами. Сам факт новой сборки не доказывает необходимость платежа.
Обновляйте данные поддерживаемым способом кошелька и прекратите параллельную подготовку запросов к одним средствам. Не редактируйте сериализованное тело на случайном сайте и не передавайте seed ради исправления входа. При повторном выборе недоступного выхода сообщите версию приложения и контекст провайдера. Поддержке полезна воспроизводимая ошибка, а не доступ к вашим секретам.
Разработчику важно проследить источник выбранной ссылки и обработку зависимостей. Одной проверки общего баланса мало. В диагностике нужны входы, возможная потребившая или создавшая их операция и состояние использованного узла. Это вопрос согласованности данных. Отключать проверку нельзя считать исправлением: отсутствие нужного выхода не исчезает от игнорирования сообщения.
Не смешивайте структурный отказ и collateral
Руководство разделяет первую фазу проверки структуры и вторую фазу исполнения скрипта. BadInputsUTxO относится к описанному структурному отказу. Это другой случай, чем включённый неуспешный скрипт с расходованием collateral. Предварительная оценка комиссии либо изменение баланса из-за иной операции не доказывают оплату этой отклонённой транзакции. Смотрите реальные записи, а не число в неподтверждённом окне.
Если средств стало меньше, найдите принятое движение. Другая операция могла потратить старый вход и создать сдачу. У выхода с токенами также есть собственные требования к ADA. Точная ошибка помогает отделить эти вопросы. BadInputsUTxO нельзя без проверки подменять сообщением о минимальном остатке или недостаточной сумме: у них разные условия. Сохраните их исходные названия.
Проверьте объяснение на учебном входе
Допустим, два вымышленных черновика выбирают «Берёза-0». А принят и расходует выход; Б затем получает BadInputsUTxO. Если А уже выполнил нужный платёж, Б не доказывает его неудачу. Если Б предназначался другому получателю, пересобирайте его по настоящим остаткам после ясного результата А. Условное обозначение не является рабочей ссылкой транзакции.
В другом случае программа могла выбрать «Берёза-1», хотя нужный выход имел индекс 0. Тогда семейство ошибки связано с неверным указателем. Точная запись позволяет различить случаи лучше заявления «ADA хватает». Сохраните её до новой сборки. Не исправляйте индекс догадкой: подтверждение должно следовать из исходной транзакции и актуального состояния.
- Сохраните ошибку, выбранные входы и идентификаторы попыток.
- Проверьте сеть Cardano и фактическое получение.
- Установите расходование, неправильную ссылку либо неизвестный выход.
- Разберите предыдущие зависимости и обновите данные приложения.
- Создавайте новый платёж только при необходимости и проверяйте полностью.
- Повторяющийся устаревший выбор передайте поддержке без секретов.
Читать операции поможет руководство Cardanoscan, другой порог — минимальная ADA в выходе. Перед обменом без регистрации следуйте текущим реквизитам и проверяйте прежнюю оплату. Успешная пересборка не подтверждает, что старый перевод никогда не дошёл.
Частые вопросы
Почему ошибка UTXO Cardano возникает при положительном балансе?
Общий остаток может быть положительным, когда конкретный выбранный выход недоступен. Проверьте ссылку и предыдущую операцию, которая его потратила либо создала.
Модель UTXO Cardano разрешает дважды использовать один выход?
Выход расходуется один раз. Для конкурирующих черновиков сначала сопоставьте результаты, затем выбирайте оставшиеся выходы при необходимости нового платежа.
Нужно повторно отправить прежнюю транзакцию после BadInputsUTxO?
Неизменённое тело не восстанавливает потраченный или неверный вход. Разберите прежние попытки и пересоберите штатным способом только при необходимости ещё одной оплаты.
По теме на сайте
Источники
- docs.cardano.org/about-cardano/learn/eutxo-explainer
- developers.cardano.org/docs/developers/curriculum/start-building/transaction-failures/
- github.com/IntersectMBO/cardano-node-wiki/blob/main/docs/reference/diagnosing-transactions.md
- developers.cardano.org/docs/developers/curriculum/start-building/transaction-building/