Guides

CPFP в Bitcoin: как не посчитать общего предка дважды

17 октября 2026 г.
6 мин чтения

Учебный расчёт комиссии потомка по объединению неподтверждённых предков. Целые sat, готовые vB и отсутствие повторного учёта, без отправки транзакций.

В учебном графе A является общим предком B и C, а D зависит от B и C. Размер каждой транзакции 200 vB. Комиссии A, B и C по 1000 sat учитываются по одному разу, потомок D добавляет 5000 sat, всего 8000 sat на 800 vB.
Цель введена для арифметики одного набора. Это не обещание распространения или подтверждения. Открыть схему крупнее

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

Что именно называют CPFP

CPFP, Child Pays For Parent, использует новую транзакцию, которая зависит от предыдущей. В FAQ Bitcoin Core этот принцип описан как добавление комиссии через зависимую транзакцию. Это отличается от замены исходной транзакции. Здесь мы разбираем только арифметику заранее выбранного набора, а не создаём или отправляем перевод.

Для реального действия нужен доступный для траты выход и возможность подписать новую транзакцию. Наличие TXID чужого платежа не даёт права тратить его выходы. Если BTC отправлены на депозитный адрес обменника, отправитель не получает контроль над этим адресом. Работать можно лишь с выходами, которыми действительно управляет соответствующий кошелёк; форма владение и доступность средств не проверяет.

Сначала нарисуйте зависимости

В учебном примере транзакция A имеет два разных выхода. Один использует B, другой — C. Будущий потомок D использует подходящие выходы B и C. Поэтому для выбранного набора нужны A, B, C и D, но A остаётся одной транзакцией, хотя к ней ведут два пути.

Вымышленный набор: все размеры уже известны, не оценены по типу адреса
МеткаНеподтверждённые родителиВиртуальный размерКомиссияКак учитывается
AНет в этом списке200 vB1 000 satОбщий предок, один раз
BA200 vB1 000 satПрямой родитель D
CA200 vB1 000 satДругой прямой родитель D
D, планируемый потомокB и C200 vBНе меньше 5 000 sat при выбранной целиДобавляется к объединению предков
Итого при цели 10 sat/vBA, B, C, D800 vB8 000 sat3 000 уже у предков, ещё 5 000 у D

Метки A–D не являются TXID. Цель 10 sat/vB и все числа вымышлены; это не текущая ставка сети, не тариф KOT.CASH и не предложение заплатить такую комиссию. Предполагается, что исходный список содержит все ещё неподтверждённые зависимости выбранных родителей. Пропущенную неизвестную транзакцию инструмент сам не найдёт.

Формула для введённой цели

Обозначим сумму виртуальных размеров уникальных предков как V, сумму их комиссий как F, размер потомка как v, выбранную ставку как r. Для всего набора нужно не меньше ceil(r × (V + v)) сатоши: дробная часть округляется вверх, поскольку комиссия задаётся целым числом сатоши. Остаток для потомка равен этой величине минус F.

Если остаток отрицательный, арифметически хватило бы нуля. Но пользователь может задать отдельный минимальный размер комиссии самого потомка. Форма берёт максимум из нуля, остатка и этого введённого минимума. Она не определяет сетевой минимум самостоятельно. Показанная сумма — минимум для двух указанных числовых условий, а не гарантия допуска транзакции.

В примере: ceil(10 × 800) − 3 000 = 5 000 sat. Если ошибочно добавить A дважды, получится 1 000 vB и 4 000 sat у «предков», а потомку приписывается уже 6 000 sat. Лишняя тысяча возникает из повторного учёта, а не из нового требования сети.

Где заканчивается эта арифметика

Не считайте весь связанный граф автоматически «пакетом, который майнер точно возьмёт». В заметках Bitcoin Core 31.0 описана работа с кластерами и группами транзакций, называемыми chunks. Правила узлов, распространения и формирования блока сложнее одной средней ставки. Наша форма не воспроизводит эти алгоритмы и не проверяет текущий mempool.

Она также не проверяет, тратят ли B и C разные выходы A, не конфликтуют ли другие входы, корректны ли подписи, достаточно ли суммы выходов, какие ограничения действуют у узла и поддерживает ли кошелёк выбранную конструкцию. Корректная таблица зависимостей не является корректной подписанной Bitcoin-транзакцией.

Как подготовить данные к проверке

  • Используйте виртуальный размер vB, а не обычные байты или вес без перевода единиц.
  • Для каждой метки укажите абсолютную комиссию в sat, не ставку sat/vB и не сумму перевода получателю.
  • В списке родителей оставьте только неподтверждённые зависимости, которые входят в модель; подтверждённую историю до них не разворачивайте.
  • Снимайте данные согласованно: после подтверждения, замены или изменения зависимостей старый расчёт нужно пересобрать.

Список может содержать посторонние строки для удобства сверки: они показываются как неиспользованные и не увеличивают сумму. При этом неизвестная ссылка, повтор ID или цикл считаются ошибкой во всём введённом графе. Предел в тридцать записей нужен для небольшой локальной формы и не является правилом Bitcoin.

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

Сверить комиссию потомка с введённой целью для набора

Локальная учебная арифметика введённого графа. Уникальные предки считаются один раз; целые sat и точное округление вверх. Все ссылки должны существовать, циклы запрещены. Нет UTXO, подписей, балансов, конфликтов, политики узлов, relay, выбора chunks майнером, живых ставок, операций с кошельком и гарантии подтверждения. Введённый минимум не является найденным сетевым минимумом; пределы технические. Расчёт выполняется на вашем устройстве, введённые данные никуда не отправляются.

Прозрачные комиссииКак обменять Bitcoin на USDT: полное руководство 2026

Источники

Готовы обменять крипту?

Быстрые, прозрачные свопы — регистрация не нужна.

Начать обмен
CPFP в Bitcoin: как не посчитать общего предка дважды | KOT.CASH