Кто за что отвечает во внешней и внутренней транзакции

Сохраните `envelope_xdr` до декодирования. Во внешней части найдите `feeSource`, заявленную комиссию и подписи этой оболочки. Во внутренней — исходную оболочку, её аккаунт-источник, порядковый номер, временные границы, операции и прежние подписи. Fee-bump не разрешает незаметно поменять получателя или сумму: любое изменение внутренней оболочки требует заново собрать и подписать транзакцию.

Для `feeSource` нужна подпись, которая достигает низкого порога (low threshold) — минимального уровня полномочий аккаунта для этой операции. Плательщик не становится владельцем актива или источником внутренней операции и не подтверждает её успешность. Чтобы не принять понятную подпись кнопки за содержание XDR, сначала разберите, что именно подписывает кошелёк.

Поля внешней и внутренней транзакций
Поле или результатК какой части относитсяЧто из него можно заключить
`feeSource` и внешние подписиВнешняяКто разрешил списать комиссию
Внешняя комиссияВнешняяВерхний предел комиссии всей fee-bump транзакции; это не сумма перевода
Исходный аккаунт и порядковый номерВнутренняяЧья очередь операций и защита от повтора используются
Внутренние операции и подписиВнутренняяКакое действие просили выполнить и кто его разрешил
`FEE_BUMP_INNER_SUCCESS` или `FEE_BUMP_INNER_FAILED`Верхний результатВ какую ветку вложенного результата перейти
`innerResultPair.result` и результаты операцийВнутренняяПочему действие прошло или остановилось
Поля внешней и внутренней транзакций
Поле или результат
`feeSource` и внешние подписи
К какой части относится
Внешняя
Что из него можно заключить
Кто разрешил списать комиссию
Поле или результат
Внешняя комиссия
К какой части относится
Внешняя
Что из него можно заключить
Верхний предел комиссии всей fee-bump транзакции; это не сумма перевода
Поле или результат
Исходный аккаунт и порядковый номер
К какой части относится
Внутренняя
Что из него можно заключить
Чья очередь операций и защита от повтора используются
Поле или результат
Внутренние операции и подписи
К какой части относится
Внутренняя
Что из него можно заключить
Какое действие просили выполнить и кто его разрешил
Поле или результат
`FEE_BUMP_INNER_SUCCESS` или `FEE_BUMP_INNER_FAILED`
К какой части относится
Верхний результат
Что из него можно заключить
В какую ветку вложенного результата перейти
Поле или результат
`innerResultPair.result` и результаты операций
К какой части относится
Внутренняя
Что из него можно заключить
Почему действие прошло или остановилось

Сохраните исходный ответ Horizon

При ответе Horizon сохраните HTTP-код, хеш транзакции, `extras.envelope_xdr`, `extras.result_xdr` и весь `extras.result_codes`. Поле `result_codes.transaction` — краткая подсказка. Массив `result_codes.operations` показывает коды операций, но полная вложенная структура остаётся в `result_xdr`. Для спора или повторной диагностики нужны оба XDR, а не скриншот уведомления.

Таймаут тоже оставляет результат неизвестным. Сначала запросите транзакцию по тому же хешу и сохраните номер реестра, в котором она появилась, либо зафиксируйте, что записи пока нет. Различие между отправкой, включением и окончательным состоянием разобрано в материале о подтверждениях и финальности.

Сначала прочитайте общий результат, затем внутреннюю ошибку

Порядок чтения XDR результата

  1. Сверьте XDR результата с сохранённой внешней оболочкой и правильной сетью.
  2. Запишите внешнюю `feeCharged` и верхний `TransactionResultCode`.
  3. Из `innerResultPair` возьмите хеш внутренней транзакции и её собственный код результата.
  4. Если вложенный результат содержит результаты операций, найдите первую неуспешную операцию и прочитайте её точный код.
  5. Сопоставьте код с полями внутренней оболочки и состоянием исходного аккаунта, получателя, линии доверия, ордера или другого затронутого объекта в этом реестре.

Если fee-bump включён в реестр, сеть считает порядковый номер внутреннего исходного аккаунта использованным даже при отказе самой операции: так работает защита от повтора. Ответ, полученный до включения, этого не доказывает. Проверьте запись транзакции и новый текущий номер аккаунта. После его изменения старая подписанная внутренняя транзакция больше не подходит.

Не смешивайте fee-bump со спонсируемым резервом (sponsored reserves). Fee-bump оплачивает комиссию транзакции. Спонсируемый резерв означает, что один аккаунт держит обязательный минимальный остаток за запись другого аккаунта. Если в одной операции встречаются оба механизма, проверяйте их независимо.

Повышение комиссии не исправляет внутреннюю ошибку

Причина и безопасное следующее действие
ФактЧего не делатьЧто проверить
Невалидны внешняя комиссия или подпись плательщикаНе менять внутреннюю транзакциюСтавку, баланс плательщика, порог подписи аккаунта, код сети и внешнюю подпись
Внутренняя проверка вернула `BAD_SEQ` или `BAD_AUTH`Не добавлять только более высокую комиссиюТекущий порядковый номер, набор подписей, пороги и сеть
Внутренняя операция завершилась ошибкойНе повторять вслепую с новым порядковым номеромКод операции и прикладное состояние, которое сделает повтор допустимым
Статус всё ещё `PENDING` или был таймаутНе собирать конкурирующий платёжТот же хеш, временные границы, включение в реестр и порядковый номер аккаунта
Нужно поднять только ставку комиссииНе менять операции и внутренние подписиПравило замены fee-bump с повышенной комиссией (`replace-by-fee`) и точное совпадение внутренней транзакции
Причина и безопасное следующее действие
Факт
Невалидны внешняя комиссия или подпись плательщика
Чего не делать
Не менять внутреннюю транзакцию
Что проверить
Ставку, баланс плательщика, порог подписи аккаунта, код сети и внешнюю подпись
Факт
Внутренняя проверка вернула `BAD_SEQ` или `BAD_AUTH`
Чего не делать
Не добавлять только более высокую комиссию
Что проверить
Текущий порядковый номер, набор подписей, пороги и сеть
Факт
Внутренняя операция завершилась ошибкой
Чего не делать
Не повторять вслепую с новым порядковым номером
Что проверить
Код операции и прикладное состояние, которое сделает повтор допустимым
Факт
Статус всё ещё `PENDING` или был таймаут
Чего не делать
Не собирать конкурирующий платёж
Что проверить
Тот же хеш, временные границы, включение в реестр и порядковый номер аккаунта
Факт
Нужно поднять только ставку комиссии
Чего не делать
Не менять операции и внутренние подписи
Что проверить
Правило замены fee-bump с повышенной комиссией (`replace-by-fee`) и точное совпадение внутренней транзакции

Завершённая проверка показывает два независимых результата: сколько комиссии списано с внешнего плательщика и что произошло с внутренней операцией. Сохраните хеши обеих транзакций, номер реестра, исходный аккаунт, использованный порядковый номер и коды операций. Добавьте фактическое изменение: например, новый остаток получателя при успехе или неизменное состояние при отказе. Тогда видно, была ли только списана комиссия или внутренняя операция тоже исполнилась.

Источники

Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.

  1. Stellar Docs — Fee-bump transactions Stellar Development Foundation · Проверено 25 августа 2026 г. в 09:18 GMT+5
  2. Stellar protocol CAP-15 — Fee-bump transactions Stellar Development Foundation · Проверено 25 августа 2026 г. в 09:18 GMT+5
  3. Stellar Horizon API — Error response Stellar Development Foundation · Проверено 25 августа 2026 г. в 09:18 GMT+5
  4. Stellar Horizon API — Error handling Stellar Development Foundation · Проверено 25 августа 2026 г. в 09:18 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.