Кошелёк тратит UTXO целиком и создаёт сдачу
Cardano хранит value в отдельных unspent transaction outputs. Если нужный native token лежит в UTXO вместе с ADA и другими assets, транзакция использует весь UTXO как input. Затем builder создаёт recipient output, change output и fee balance — нельзя вынуть один token, оставив старый UTXO частично нетронутым.
Базовую механику удобно сравнить с объяснением UTXO и сдачи, но Cardano output может содержать multi-asset bundle, datum и reference script. Поэтому размер и minimum ADA меняются вместе со структурой output.
| Часть транзакции | Что в ней лежит | Что проверить |
|---|---|---|
| Recipient output | Отправляемые tokens и ADA | Точный serialized size и min lovelace |
| Change output | Остаток ADA и всех неотправленных assets | Не раздробил ли builder bundle слишком мелко |
| Script output | Value, datum, reference script | Дополнительный размер и актуальные rules |
| Fee | Отдельный расход ADA | ADA хватает одновременно на outputs и fee |
- Часть транзакции
- Recipient output
- Что в ней лежит
- Отправляемые tokens и ADA
- Что проверить
- Точный serialized size и min lovelace
- Часть транзакции
- Change output
- Что в ней лежит
- Остаток ADA и всех неотправленных assets
- Что проверить
- Не раздробил ли builder bundle слишком мелко
- Часть транзакции
- Script output
- Что в ней лежит
- Value, datum, reference script
- Что проверить
- Дополнительный размер и актуальные rules
- Часть транзакции
- Fee
- Что в ней лежит
- Отдельный расход ADA
- Что проверить
- ADA хватает одновременно на outputs и fee
Размер token bundle определяет lovelace floor
Текущая официальная integration guide описывает CIP-55 расчёт как (160 + serialized_output_size) × coinsPerUTxOByte. Protocol parameter получают из выбранной сети и свежего состояния. Число единиц одного token type не увеличивает перечень asset identifiers, но новые policy IDs и asset names делают bundle больше.
Decimals влияют на отображение количества, а не снимают min-ADA с output. Перед подписью отдельно проверьте raw balance и decimals, чтобы не путать минимальный lovelace с количеством отправляемого native token.
Пересобрать, а не добавлять ADA вслепую
Runbook диагностики
- 1Обновить UTXO set
Получите свежий список inputs на правильной сети; сохраните txid#index, lovelace и полный multi-asset value каждого кандидата.
- 2Определить outputs
Запишите адрес, token quantities, datum/reference script и предполагаемую сдачу. Не рассчитывайте только recipient output.
- 3Получить protocol parameters
Зафиксируйте coinsPerUTxOByte, network/era, node or provider version и block/slot проверки.
- 4Выполнить coin selection
Пусть актуальный builder выберет достаточные token и ADA inputs, вычислит fee и сформирует валидную сдачу.
- 5Проверить каждый output
Сравните фактический lovelace с вычисленным минимумом после окончательной сериализации, а не до добавления datum или change.
- 6Подписать свежий body
Если input уже потрачен или состояние изменилось, получите UTXO заново и перестройте транзакцию; не переподписывайте stale body.
Coin selection должен учитывать каждый asset и fee одновременно. Консолидация может уменьшить число inputs, но объединение многих token types способно увеличить размер change output и его minimum ADA; универсальной стратегии без расчёта нет. Если change нельзя сформировать валидно, добавление ADA только recipient output не исправляет остаток: нужен другой набор inputs, иное разбиение bundle или дополнительный ADA input.
| Сигнал | Почему остановиться | Recovery |
|---|---|---|
| Wallet предлагает token-only output | Такой output не соответствует native-token rule | Обновить wallet/builder и добавить вычисленный min ADA |
| Minimum взят из старого скриншота | Protocol parameter и output size не доказаны | Получить свежие parameters и пересчитать |
| Recipient проходит, change слишком мал | Валидность нужна каждому output | Изменить inputs, bundle split или добавить ADA |
| BadInputsUTxO | Выбранный input уже потрачен | Обновить UTXO set и полностью перестроить |
| Неизвестны datum/reference script | Размер и script boundary неполны | Декодировать output до подписи |
- Сигнал
- Wallet предлагает token-only output
- Почему остановиться
- Такой output не соответствует native-token rule
- Recovery
- Обновить wallet/builder и добавить вычисленный min ADA
- Сигнал
- Minimum взят из старого скриншота
- Почему остановиться
- Protocol parameter и output size не доказаны
- Recovery
- Получить свежие parameters и пересчитать
- Сигнал
- Recipient проходит, change слишком мал
- Почему остановиться
- Валидность нужна каждому output
- Recovery
- Изменить inputs, bundle split или добавить ADA
- Сигнал
- BadInputsUTxO
- Почему остановиться
- Выбранный input уже потрачен
- Recovery
- Обновить UTXO set и полностью перестроить
- Сигнал
- Неизвестны datum/reference script
- Почему остановиться
- Размер и script boundary неполны
- Recovery
- Декодировать output до подписи
Итоговый артефакт содержит network, block/slot, inputs, полный value каждого output, serialized size, coinsPerUTxOByte, computed minimum, fee и tx hash после inclusion. Затем выполните проверку транзакции по тем же outputs, а не только по уменьшившемуся wallet balance.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Cardano Docs — Native tokens Cardano Foundation · Проверено 23 августа 2026 г. в 20:00 GMT+5
- Cardano Docs — Extended UTXO model Cardano Foundation · Проверено 23 августа 2026 г. в 20:00 GMT+5
- Cardano Developer Portal — Exchange integrations Cardano Foundation · Проверено 23 августа 2026 г. в 20:00 GMT+5
- Intersect cardano-node — Release 11.0.1 IntersectMBO · Проверено 23 августа 2026 г. в 21:16 GMT+5
