Комиссия в Bitcoin не привязана к сумме перевода. Она зависит исключительно от размера транзакции в байтах и конкуренции за место в блоке. Единица измерения — сатоши за виртуальный байт (sat/vB). Понимание этой механики позволяет не переплачивать в спокойные периоды и не застревать в мемпуле при пиковой нагрузке.
Bitcoin-транзакция — это структура данных фиксированного формата: входы, выходы, скрипты подписей, witness-данные. Чем больше входов и чем сложнее скрипт, тем больше байт занимает сериализованная транзакция. Майнер включает транзакции в блок ограниченного размера (точнее, ограниченного веса — 4 000 000 weight units), поэтому он заинтересован брать те, которые приносят больше комиссии на единицу занятого места.
Fee rate = общая комиссия (в сатоши) ÷ виртуальный размер транзакции (в vB).
Виртуальный байт (vB) — нормализованная единица, учитывающая скидку для witness-данных (SegWit). Формула:
где
Типичная SegWit-транзакция P2WPKH с одним входом и двумя выходами занимает около 140 vB. Если вы хотите отправить её с fee rate 10 sat/vB:
Та же транзакция с двумя входами (например, вы консолидируете два UTXO) займёт примерно 250 vB, и комиссия при том же rate вырастет до 2500 сатоши.
Мемпул (mempool) — очередь неподтверждённых транзакций, которую хранит каждый узел. Когда майнер формирует блок, он сортирует кандидатов по fee rate: чем выше sat/vB, тем раньше транзакция попадёт в блок.
Несколько важных деталей:
Транзакция остаётся в мемпуле неопределённо долго, если её fee rate ниже текущей «проходной» ставки. Проходная ставка — не фиксированная величина: она меняется от блока к блоку в зависимости от загрузки сети. В периоды низкой активности достаточно 1–2 sat/vB; при пиковом спросе (например, во время ажиотажа вокруг Ordinals или резкого роста цены) проходная ставка может подниматься до 50–200+ sat/vB.
Дополнительные причины застревания:
Большинство современных кошельков используют оценку на основе мемпула (fee estimation). Bitcoin Core, например, содержит встроенный модуль
Альтернативный подход — внешние API-оценки (mempool.space, Blockstream Explorer и др.), которые агрегируют данные мемпула нескольких узлов и показывают распределение fee rate по перцентилям.
Значения ориентировочные и зависят от текущей загрузки. Перед отправкой стоит проверить актуальное распределение на мемпул-эксплорере.
Если транзакция была создана с сигналом RBF (поле
Большинство современных кошельков (Electrum, Sparrow, BlueWallet, Trezor Suite) поддерживают RBF из коробки.
Если RBF не был включён при создании транзакции, можно создать дочернюю транзакцию, которая тратит один из выходов застрявшей родительской, и назначить ей высокую комиссию. Майнер, видя пакет «родитель + ребёнок», пересчитывает эффективный fee rate всего пакета и с большей вероятностью включит обе транзакции в блок.
CPFP работает, только если у вас есть ключ от адреса, на который пришёл один из выходов застрявшей транзакции (обычно это ваш change-адрес).
Если ни RBF, ни CPFP недоступны, остаётся ждать. Транзакция будет подтверждена, когда нагрузка сети снизится и проходная ставка упадёт ниже её fee rate. Альтернатива — дождаться, пока мемпул узла вытеснит её (по умолчанию через 14 дней в Bitcoin Core, параметр
Установка фиксированной комиссии без учёта размера транзакции. Если кошелёк позволяет задать комиссию в абсолютных сатоши, а не в sat/vB, легко ошибиться: 500 сатоши для транзакции на 140 vB — это ~3,5 sat/vB, а для транзакции на 1000 vB — всего 0,5 sat/vB, которая может не пройти порог реле.
Игнорирование количества входов. Консолидация UTXO в одной транзакции увеличивает размер и, соответственно, комиссию. Если вы отправляете с адреса, на котором накопилось много мелких входов, размер транзакции может вырасти в разы.
Отправка без RBF-сигнала в условиях неопределённости. Если вы не уверены в выбранном fee rate, лучше включить RBF: это даёт возможность поднять комиссию постфактум без потери средств.
Попытка «ускорить» через сторонние сервисы. Сервисы, предлагающие «ускорение за процент», в лучшем случае делают CPFP от своего имени (что вы можете сделать сами), в худшем — являются мошенническими.
Формат адреса и тип скрипта напрямую влияют на виртуальный размер:
Переход с legacy на native SegWit или Taproot снижает размер транзакции и, соответственно, комиссию при том же fee rate. Для получателя это бесплатно: экономит отправитель.
Если мемпул содержит менее 50 МБ данных, сеть разгружена и достаточно минимальной комиссии. Если объём превышает 150–200 МБ, стоит закладывать повышенный rate для своевременного подтверждения.
Что такое sat/vB и почему не «процент от суммы»
Bitcoin-транзакция — это структура данных фиксированного формата: входы, выходы, скрипты подписей, witness-данные. Чем больше входов и чем сложнее скрипт, тем больше байт занимает сериализованная транзакция. Майнер включает транзакции в блок ограниченного размера (точнее, ограниченного веса — 4 000 000 weight units), поэтому он заинтересован брать те, которые приносят больше комиссии на единицу занятого места.
Fee rate = общая комиссия (в сатоши) ÷ виртуальный размер транзакции (в vB).
Виртуальный байт (vB) — нормализованная единица, учитывающая скидку для witness-данных (SegWit). Формула:
Код:
vsize = (3 × base_size + total_size) / 4
где
base_size — размер транзакции без witness-данных, total_size — полный размер. Для legacy-транзакций (без SegWit) vsize совпадает с реальным размером в байтах. Для SegWit-транзакций witness-данные учитываются с коэффициентом 0,25, поэтому vsize меньше реального размера.Пример расчёта
Типичная SegWit-транзакция P2WPKH с одним входом и двумя выходами занимает около 140 vB. Если вы хотите отправить её с fee rate 10 sat/vB:
Код:
Комиссия = 140 vB × 10 sat/vB = 1400 сатоши ≈ 0.00001400 BTC
Та же транзакция с двумя входами (например, вы консолидируете два UTXO) займёт примерно 250 vB, и комиссия при том же rate вырастет до 2500 сатоши.
Как мемпул определяет приоритет
Мемпул (mempool) — очередь неподтверждённых транзакций, которую хранит каждый узел. Когда майнер формирует блок, он сортирует кандидатов по fee rate: чем выше sat/vB, тем раньше транзакция попадёт в блок.
Несколько важных деталей:
- Мемпул не глобальный. Каждый узел видит свою копию. Транзакция, принятая одним узлом, может не дойти до другого из-за различий в политике реле (minrelaytxfee, лимиты размера).
- Минимальный порог реле. Узлы Bitcoin Core по умолчанию не ретранслируют транзакции с fee rate ниже 1 sat/vB (параметр
minrelaytxfee). Транзакция с нулевой комиссией или ставкой ниже порога просто не распространится по сети.
- Эвристика CPFP и RBF. Майнеры оценивают не только отдельную транзакцию, но и её «пакет»: если дочерняя транзакция тратит выход неподтверждённой родительской и несёт высокую комиссию, эффективный fee rate пакета растёт. Это основа Child-Pays-For-Parent (CPFP).
Почему транзакция зависает
Транзакция остаётся в мемпуле неопределённо долго, если её fee rate ниже текущей «проходной» ставки. Проходная ставка — не фиксированная величина: она меняется от блока к блоку в зависимости от загрузки сети. В периоды низкой активности достаточно 1–2 sat/vB; при пиковом спросе (например, во время ажиотажа вокруг Ordinals или резкого роста цены) проходная ставка может подниматься до 50–200+ sat/vB.
Дополнительные причины застревания:
- Транзакция не достигла достаточного числа узлов (проблема реле).
- Транзакция использует RBF-сигнал, но замена не была отправлена, и некоторые узлы могли её отбросить по таймауту.
- Мемпул узла переполнен, и транзакции с низким приоритетом вытесняются (eviction).
Как кошельки выбирают fee rate
Большинство современных кошельков используют оценку на основе мемпула (fee estimation). Bitcoin Core, например, содержит встроенный модуль
fee estimator, который отслеживает, за сколько блоков подтверждаются транзакции с определённым fee rate, и выдаёт рекомендацию для целевого времени подтверждения (1 блок, 3 блока, 6 блоков и т. д.).Альтернативный подход — внешние API-оценки (mempool.space, Blockstream Explorer и др.), которые агрегируют данные мемпула нескольких узлов и показывают распределение fee rate по перцентилям.
Практическая таблица ориентиров
| Цель | Типичный fee rate (спокойная сеть) | Типичный fee rate (пиковая нагрузка) |
|---|---|---|
| Подтверждение в следующем блоке (~10 мин) | 5–15 sat/vB | 50–200+ sat/vB |
| Подтверждение в течение часа | 2–5 sat/vB | 20–50 sat/vB |
| Подтверждение в течение нескольких часов | 1–2 sat/vB | 5–20 sat/vB |
Значения ориентировочные и зависят от текущей загрузки. Перед отправкой стоит проверить актуальное распределение на мемпул-эксплорере.
Что делать, если транзакция застряла
Replace-By-Fee (RBF)
Если транзакция была создана с сигналом RBF (поле
nSequence хотя бы одного входа меньше 0xFFFFFFFE), её можно заменить новой версией с более высокой комиссией. Требования к замене в Bitcoin Core:- Новая транзакция должна платить комиссию не меньше, чем старая, плюс минимум 1 sat/vB дополнительного прироста на каждый байт размера.
- Новая транзакция не должна содержать новых неподтверждённых входов.
- Не более 100 транзакций в цепочке замены.
Большинство современных кошельков (Electrum, Sparrow, BlueWallet, Trezor Suite) поддерживают RBF из коробки.
Child-Pays-For-Parent (CPFP)
Если RBF не был включён при создании транзакции, можно создать дочернюю транзакцию, которая тратит один из выходов застрявшей родительской, и назначить ей высокую комиссию. Майнер, видя пакет «родитель + ребёнок», пересчитывает эффективный fee rate всего пакета и с большей вероятностью включит обе транзакции в блок.
CPFP работает, только если у вас есть ключ от адреса, на который пришёл один из выходов застрявшей транзакции (обычно это ваш change-адрес).
Ожидание и eviction
Если ни RBF, ни CPFP недоступны, остаётся ждать. Транзакция будет подтверждена, когда нагрузка сети снизится и проходная ставка упадёт ниже её fee rate. Альтернатива — дождаться, пока мемпул узла вытеснит её (по умолчанию через 14 дней в Bitcoin Core, параметр
mempoolexpiry). После вытеснения транзакция исчезает из мемпула, и средства формально возвращаются в состояние «не потрачены», хотя повторная отправка потребует создания новой транзакции.Типичные ошибки при выборе комиссии
Установка фиксированной комиссии без учёта размера транзакции. Если кошелёк позволяет задать комиссию в абсолютных сатоши, а не в sat/vB, легко ошибиться: 500 сатоши для транзакции на 140 vB — это ~3,5 sat/vB, а для транзакции на 1000 vB — всего 0,5 sat/vB, которая может не пройти порог реле.
Игнорирование количества входов. Консолидация UTXO в одной транзакции увеличивает размер и, соответственно, комиссию. Если вы отправляете с адреса, на котором накопилось много мелких входов, размер транзакции может вырасти в разы.
Отправка без RBF-сигнала в условиях неопределённости. Если вы не уверены в выбранном fee rate, лучше включить RBF: это даёт возможность поднять комиссию постфактум без потери средств.
Попытка «ускорить» через сторонние сервисы. Сервисы, предлагающие «ускорение за процент», в лучшем случае делают CPFP от своего имени (что вы можете сделать сами), в худшем — являются мошенническими.
SegWit, Taproot и влияние на комиссию
Формат адреса и тип скрипта напрямую влияют на виртуальный размер:
| Тип выхода | Примерный размер входа (vB) | Примерный размер выхода (vB) |
|---|---|---|
P2PKH (legacy, 1...) | ~148 | ~34 |
P2SH-P2WPKH (nested SegWit, 3...) | ~91 | ~32 |
P2WPKH (native SegWit, bc1q...) | ~68 | ~31 |
P2TR (Taproot, bc1p...) | ~57 | ~43 |
Переход с legacy на native SegWit или Taproot снижает размер транзакции и, соответственно, комиссию при том же fee rate. Для получателя это бесплатно: экономит отправитель.
Как проверить текущую ситуацию в мемпуле
- mempool.space — визуализация распределения транзакций по fee rate, прогноз времени подтверждения, история блоков.
- Bitcoin Core RPC:
getmempoolinfoпоказывает текущий размер мемпула в байтах и количество транзакций;estimatesmartfeeвозвращает рекомендованный fee rate для заданного числа блоков.
- Blockstream Explorer — альтернативный обзор с фильтрацией по fee rate.
Если мемпул содержит менее 50 МБ данных, сеть разгружена и достаточно минимальной комиссии. Если объём превышает 150–200 МБ, стоит закладывать повышенный rate для своевременного подтверждения.
Краткий чек-лист перед отправкой
- Проверьте текущий размер мемпула и рекомендованный fee rate на эксплорере.
- Убедитесь, что кошелёк считает комиссию в sat/vB, а не в абсолютных сатоши.
- Если транзакция не срочная, можно выбрать rate для подтверждения за 3–6 блоков и сэкономить.
- Включите RBF, если кошелёк это позволяет.
- При большом количестве входов рассмотрите предварительную консолидацию в период низкой нагрузки.
