Исходный PSBT — контрольный образец и запасная транзакция

Получатель объявляет конечную точку параметром `pj` в URI BIP-21. URL обязан использовать аутентифицированное шифрование: TLS с проверкой сертификата либо onion-сервис, чей идентификатор публичного ключа уже передан через TLS. Незащищённое соединение отклоняют. До запроса отправитель собирает финализированный и пригодный к публикации исходный PSBT с данными неизрасходованных выходов (UTXO). Не добавляйте лишние сведения: `keypath` раскрывает путь вывода ключа внутри кошелька, а `global xpub` — расширенный публичный ключ для набора дочерних ключей. Сохраните байты, txid, входы, выходы, version, nLockTime, sequence и абсолютную комиссию. Ответ сравнивают только с этим объектом.

Паспорт исходного PSBT до запроса предложения
ГруппаЧто сохранитьЗачем
ВходыOutpoint, сумма, тип скрипта и sequenceУвидеть удаление или изменение
ВыходыscriptPubKey, сумма и рольЗащитить выходы, которые не принадлежат получателю
Поля транзакцииversion и nLockTimeНе принять скрыто изменённые условия
КомиссияСуммы, абсолютная комиссия и ставкаОграничить рост и снижение
АртефактФинализированный PSBT и готовая транзакцияСохранить точную запасную транзакцию
Паспорт исходного PSBT до запроса предложения
Группа
Входы
Что сохранить
Outpoint, сумма, тип скрипта и sequence
Зачем
Увидеть удаление или изменение
Группа
Выходы
Что сохранить
scriptPubKey, сумма и роль
Зачем
Защитить выходы, которые не принадлежат получателю
Группа
Поля транзакции
Что сохранить
version и nLockTime
Зачем
Не принять скрыто изменённые условия
Группа
Комиссия
Что сохранить
Суммы, абсолютная комиссия и ставка
Зачем
Ограничить рост и снижение
Группа
Артефакт
Что сохранить
Финализированный PSBT и готовая транзакция
Зачем
Сохранить точную запасную транзакцию

Исходный вариант использует выбранные UTXO целиком и содержит сдачу. Если кошелёк изменил выбор монет между сохранением и запросом, прежний паспорт больше не годится: создайте новый исходный PSBT и начните сравнение заново. Не соединяйте поля двух вариантов вручную.

Предложение меняет только разрешённые части

Проверки BIP-78 перед подписью
ОбъектДопустимоПричина немедленно отвергнуть
Все входы и выходыНет keypath; ни в одном входе нет partial signatureНайдена утечка пути ключа или частичная подпись
Входы отправителяВсе на месте, не финализированы, sequence сохранёнВход пропал, финализирован или изменён
Входы получателяФинализированы и содержат данные UTXOВход нельзя проверить
ПоследовательностиВсе входы предложения имеют одно значение sequenceЗначения различаются
ПорядокСтарый сохранён; новые элементы вставлены в случайную позициюОтносительный порядок исходных элементов изменён
Выходы отправителяВсе, кроме оплаты получателю, сохраненыСдача исчезла или уменьшена без разрешения
Выходы получателяПолучатель может менять свои выходы, если подмена не запрещенаПодмена нарушает установленный запрет
Общие поляVersion и nLockTime совпадаютЛюбое изменение
КомиссияНе ниже исходнойСнижение или превышение вклада
Проверки BIP-78 перед подписью
Объект
Все входы и выходы
Допустимо
Нет keypath; ни в одном входе нет partial signature
Причина немедленно отвергнуть
Найдена утечка пути ключа или частичная подпись
Объект
Входы отправителя
Допустимо
Все на месте, не финализированы, sequence сохранён
Причина немедленно отвергнуть
Вход пропал, финализирован или изменён
Объект
Входы получателя
Допустимо
Финализированы и содержат данные UTXO
Причина немедленно отвергнуть
Вход нельзя проверить
Объект
Последовательности
Допустимо
Все входы предложения имеют одно значение sequence
Причина немедленно отвергнуть
Значения различаются
Объект
Порядок
Допустимо
Старый сохранён; новые элементы вставлены в случайную позицию
Причина немедленно отвергнуть
Относительный порядок исходных элементов изменён
Объект
Выходы отправителя
Допустимо
Все, кроме оплаты получателю, сохранены
Причина немедленно отвергнуть
Сдача исчезла или уменьшена без разрешения
Объект
Выходы получателя
Допустимо
Получатель может менять свои выходы, если подмена не запрещена
Причина немедленно отвергнуть
Подмена нарушает установленный запрет
Объект
Общие поля
Допустимо
Version и nLockTime совпадают
Причина немедленно отвергнуть
Любое изменение
Объект
Комиссия
Допустимо
Не ниже исходной
Причина немедленно отвергнуть
Снижение или превышение вклада

Предложение сохраняет все исходные входы и все выходы, которые не принадлежат получателю. Старый порядок не перемешивают; новые элементы вставляют случайно. После проверки отправитель подписывает только входы исходного образца. Просьба подписать добавленный вход — стоп-сигнал.

Вклад в комиссию разрешён заранее и ограничен тремя границами

По умолчанию получатель не уменьшает выход отправителя. Исключение требует двух валидных параметров: `additionalfeeoutputindex` и `maxadditionalfeecontribution`. Фактический вклад равен уменьшению выбранного выхода и одновременно ограничен максимумом, ростом абсолютной комиссии и формулой добавленного веса BIP-78.

Как проверить комиссию без догадок
ПроверкаФормула или границаОтказ
Абсолютная комиссияproposalFee ≥ originalFeeПолучатель уменьшил общую комиссию
Объявленный пределactualContribution ≤ maxadditionalfeecontributionСписано больше согласованного
Связь с ростомactualContribution ≤ proposalFee − originalFeeРазница ушла не только в комиссию
Добавленный весactualContribution ≤ originalPSBTFeeRate × vsize(sender_input_type) × (count(proposalInputs) − count(originalInputs))Отправитель оплачивает посторонний размер
Минимальная ставкаПосле подписи не ниже minfeerate, если отправитель его передалТранзакция не выдерживает заданный порог
Как проверить комиссию без догадок
Проверка
Абсолютная комиссия
Формула или граница
proposalFee ≥ originalFee
Отказ
Получатель уменьшил общую комиссию
Проверка
Объявленный предел
Формула или граница
actualContribution ≤ maxadditionalfeecontribution
Отказ
Списано больше согласованного
Проверка
Связь с ростом
Формула или граница
actualContribution ≤ proposalFee − originalFee
Отказ
Разница ушла не только в комиссию
Проверка
Добавленный вес
Формула или граница
actualContribution ≤ originalPSBTFeeRate × vsize(sender_input_type) × (count(proposalInputs) − count(originalInputs))
Отказ
Отправитель оплачивает посторонний размер
Проверка
Минимальная ставка
Формула или граница
После подписи не ниже minfeerate, если отправитель его передал
Отказ
Транзакция не выдерживает заданный порог

После проверки выбирают предложение или исходник, но не оба

Выбор основной или запасной ветки

  1. 1
    Заморозить Original

    Сохраните финализированный PSBT и паспорт до запроса. Готовая транзакция должна проходить локальную проверку либо считаться пригодной к публикации.

  2. 2
    Проверить Proposal локально

    Сравните поля, входы, выходы, данные UTXO, комиссию и вклад. Не подписывайте объект ради диагностики.

  3. 3
    Выбрать ветку

    Допустимое предложение подписывают по входам отправителя и публикуют. При тайм-ауте, ошибке защищённого обмена или отказе используют исходник.

  4. 4
    Закрыть вторую ветку

    После публикации одного варианта другой блокируют. Не используйте исходник для ускорения предложения.

  5. 5
    Проверить сеть

    Найдите txid в мемпуле или блоке и сверьте поля. Одного уведомления кошелька недостаточно.

Если выбранная транзакция застряла, применяйте правила повышения комиссии только к ней и сначала выясните поддержку RBF или CPFP. Возврат ко второму конфликтующему варианту меняет входы получателя и может нарушить его состояние, поэтому это не универсальная замена повышению.

BIP-77 не меняет рабочие проверки этой статьи

BIP-77 на дату проверки — Draft версии 0.2.0. Здесь это лишь контекст асинхронного PayJoin, а не рабочий источник. Поддержку кошелька, конечной точки или сервиса из статуса черновика не выводят. Проверки выше опираются только на Deployed BIP-78.

Стоп-сигналы и безопасное восстановление
СигналПочему стопВосстановление
Нет исходникаНет контрольного образца и запасной транзакцииПересобрать исходник до запроса
Изменён выход отправителяКража или скрытая комиссияОтклонить; проверить разрешённый выход
Нужно подписать новый входНарушено владениеОтклонить без подписи
Неизвестная ошибка в интерфейсеВозможен фишингПоказать локальный код и выбрать исходник
Вариант уже опубликованВторой конфликтуетСледить за txid; второй не публиковать
Стоп-сигналы и безопасное восстановление
Сигнал
Нет исходника
Почему стоп
Нет контрольного образца и запасной транзакции
Восстановление
Пересобрать исходник до запроса
Сигнал
Изменён выход отправителя
Почему стоп
Кража или скрытая комиссия
Восстановление
Отклонить; проверить разрешённый выход
Сигнал
Нужно подписать новый вход
Почему стоп
Нарушено владение
Восстановление
Отклонить без подписи
Сигнал
Неизвестная ошибка в интерфейсе
Почему стоп
Возможен фишинг
Восстановление
Показать локальный код и выбрать исходник
Сигнал
Вариант уже опубликован
Почему стоп
Второй конфликтует
Восстановление
Следить за txid; второй не публиковать

Источники

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

  1. BIP-78 — A Simple Payjoin Proposal Bitcoin BIPs · Проверено 28 августа 2026 г. в 00:04 GMT+5
  2. BIP-78 pinned source — 7fe0b034 Bitcoin BIPs · Проверено 28 августа 2026 г. в 00:04 GMT+5
  3. BIP-77 — Async Payjoin Bitcoin BIPs · Проверено 28 августа 2026 г. в 00:04 GMT+5
  4. BIP-77 pinned draft source — 7fe0b034 Bitcoin BIPs · Проверено 28 августа 2026 г. в 00:04 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.