Прямой ответ
Комиссии Bitcoin зависят от виртуального размера транзакции, ставки комиссии и меняющегося спроса на место в блоке, а не просто от отправленной суммы.
Два платежа Bitcoin могут отправлять одинаковую сумму и платить очень разные сетевые комиссии. Разница не в переводимой стоимости. Она в транзакции, которую кошельку приходится строить: какие неизрасходованные выходы становятся входами, сколько новых выходов создается, какие типы скриптов задействованы, сколько сериализованных данных содержит подписанная транзакция и какую ставку комиссии кошелек применяет к этому виртуальному размеру.
Вот почему кошелек может показывать одну комиссию до выбора монет и другую после выбора окончательных входов. Это также причина, по которой отправка 0,01 BTC может стоить дороже, чем отправка 1 BTC. Bitcoin не взимает процент с платежа. Он оценивает место в блоке.
Расчет следует одному непрерывному пути:
Входы и выходы
→ сериализованные данные транзакции
→ вес транзакции
→ виртуальный размер в vB
→ ставка комиссии в sat/vB
→ общая комиссия в сатоши
Понимание этого пути позволяет читать предварительный просмотр комиссии в кошельке, не путая сумму платежа, ставку комиссии и итоговую комиссию.
Комиссия не является процентом
Комиссия за транзакцию Bitcoin — это разница между общей стоимостью ее входов и общей стоимостью, назначенной ее выходам:
Комиссия за транзакцию
=
Общая стоимость входов
−
Общая стоимость выходов
Предположим, кошелек тратит один вход стоимостью 120 000 сатоши. Он создает выход платежа на 100 000 сатоши и выход сдачи на 18 500 сатоши. Оставшиеся 1 500 сатоши являются комиссией за транзакцию:
120 000 сатоши
− 100 000 сатоши
− 18 500 сатоши
= комиссия 1 500 сатоши
Сеть не списывает эту комиссию отдельно со счета. Комиссия — это стоимость входа, которую транзакция не назначает новому выходу.
Кошелек может показывать несколько связанных цифр на одном экране. Они описывают разные части транзакции, и их не следует сравнивать без учета их единиц измерения.
| Отображаемое значение | Что это означает | Пример |
|---|---|---|
| Сумма получателя | Биткоин, назначенный на выход для предполагаемого получателя | 100 000 сатоши |
| Общая комиссия | Стоимость входа, не назначенная ни на какой выход | 1 500 сатоши |
| Ставка комиссии | Цена, применяемая за виртуальный байт | 10 сатоши/вБ |
| Виртуальный размер | Взвешенный размер транзакции, используемый для сравнения комиссий | 150 вБ |
| Общий дебет кошелька | Сумма получателя плюс комиссия, когда отправитель платит её отдельно | 101 500 сатоши |
Сумма платежа и общая комиссия измеряются в сатоши или BTC. Ставка комиссии измеряется в сатоши/вБ. Виртуальный размер измеряется в вБ. Если эти метки незнакомы, сначала прочитайте что означает сатоши в кошельках и отображении комиссий.
Входы и выходы определяют размер
Входы тратят существующие UTXO
Биткоин-кошельки не тратят средства с одного баланса счета. Они тратят существующие неизрасходованные выходы транзакций, обычно называемые UTXO. Каждый выбранный UTXO становится входом в новой транзакции.
Вход идентифицирует предыдущий выход и предоставляет данные, необходимые для выполнения условий траты этого выхода. В зависимости от типа скрипта, часть данных авторизации появляется в базовой сериализации транзакции, а часть — в witness.
Отображаемый баланс может скрывать структуру, которая важна для комиссий. Кошелек, показывающий 500 000 сатоши, может контролировать:
- один UTXO на 500 000 сатоши;
- пять UTXO по 100 000 сатоши каждый;
- или пятьдесят UTXO по 10 000 сатоши каждый.
Все три кошелька показывают одинаковый общий баланс. Трата с них не создает одинаковую транзакцию. Больше выбранных UTXO обычно означает больше входов, и каждый дополнительный вход добавляет в сериализованную транзакцию еще один outpoint, поле sequence, данные скрипта или witness, а также префикс длины.
Платеж в 50 000 сатоши, финансируемый одним подходящим UTXO, может быть меньше, чем тот же платеж, финансируемый восемью маленькими UTXO. Выбор монет также меняет конфиденциальность и будущий набор UTXO кошелька. Чтобы сравнить стоимость консолидации UTXO сейчас с их отдельной тратой позже, используйте Калькулятор консолидации UTXO биткоина.
Выходы получателя и сдачи
Выход транзакции содержит целочисленное значение в сатоши и блокирующий скрипт. Платеж получателю — это один выход. Сдача, возвращаемая отправителю, обычно является другим.
Если кошелек выбирает выход в 120,000-sat UTXO для совершения платежа в 100,000-sat, он обычно не может потратить только часть этого UTXO. Новая транзакция потребляет весь выход. После учета комиссии неиспользованная стоимость возвращается в выход сдачи, контролируемый кошельком.
Типичный платеж, таким образом, может содержать один или несколько входов, выход получателя, выход сдачи и фиксированные поля, такие как версия и locktime. Он также содержит количество входов и выходов, и каждый вход имеет свое собственное значение sequence.
Добавление еще одного получателя добавляет выход. Добавление сдачи также добавляет один. Каждый выход увеличивает размер транзакции, хотя обычный вход с одной подписью обычно добавляет больше виртуального размера, чем обычный выход.
Кошелек может избежать сдачи, когда выбранное значение входа близко соответствует платежу плюс комиссия. Он также может добавить очень маленький остаток к комиссии вместо создания неэкономичного выхода сдачи. Это решение зависит от выбора монет и правил политики кошелька, поэтому “один платеж” — недостаточно информации для воспроизведения комиссии.
Байты, Weight и vSize
Транзакции Bitcoin сериализуются в байты. Сырая структура включает версию, количество входов, входы, количество выходов, выходы и locktime. Транзакции SegWit также включают маркер, флаг и поля witness.
До SegWit сравнение комиссий часто напрямую ссылалось на байты транзакции. BIP 141 ввел вес транзакции (Weight), чтобы данные witness могли вносить вклад иначе, чем данные не-witness.
BIP 141 определяет Weight как:
Transaction Weight
=
Base transaction size × 3
+
Total transaction size
То же соотношение можно записать как:
Transaction Weight
=
Non-witness bytes × 4
+
Witness bytes
Байт без witness-данных вносит четыре единицы веса. Байт witness-данных вносит одну. Более низкий вес не делает witness-данные бесплатными; они по-прежнему занимают блок Weight и увеличивают размер, влияющий на комиссию.
Кошельки и рынки комиссий обычно выражают результат в виртуальных байтах, сокращенно vB:
vSize
=
ceil(Transaction Weight ÷ 4)
Деление округляется вверх до целого виртуального байта. Базовый размер, общий сериализованный размер, Weight и vSize являются связанными измерениями, но они не взаимозаменяемы. Базовый размер исключает данные, связанные с witness. Общий размер включает полную сериализацию. Weight применяет правило четыре к одному. vSize превращает этот Weight в целочисленный размер, используемый для обычных расчетов ставки комиссии.
sat/vB Определяет Цену Транзакции
Обычная единица ставки комиссии Bitcoin — сатоши за виртуальный байт, обозначается sat/vB. После того как структура транзакции дала vSize, упрощенный расчет комиссии выглядит так:
Estimated fee in sats
=
Transaction vSize
×
Fee rate in sat/vB
Единицы измерения сокращаются чисто: виртуальные байты, умноженные на satоши за виртуальный байт, дают общее количество satоши.
Ставка и общая комиссия отвечают на разные вопросы:
- Комиссионная ставка: сколько транзакция платит за каждую единицу виртуального размера.
- Общая комиссия: сколько satоши платит вся транзакция.
Крупная транзакция может платить высокую общую комиссию при умеренной ставке. Компактная транзакция может платить меньшую общую комиссию даже при более высокой ставке. Сравнение только общей комиссии скрывает разницу между размером транзакции и срочностью рынка комиссий.
Как только окончательная подписанная транзакция известна, ее эффективная комиссионная ставка может быть рассчитана из фактической комиссии и фактического vSize:
Effective fee rate
=
Actual fee in sats
÷
Actual vSize in vB
Эффективная ставка может содержать десятичную дробь, даже если сама комиссия за транзакцию является целым числом satоши.
Кошелек или калькулятор также может принимать десятичную целевую ставку комиссии. Сама комиссия за транзакцию по-прежнему выражается целым числом sats, потому что значения входов и выходов являются целыми числами. Когда умножение дает дробное значение satоши, реализация должна выбрать целое число satоши для комиссии. Округление вверх позволяет не опускаться ниже запрошенной целевой ставки, что может сделать конечную эффективную ставку немного выше введенного значения.
Воспроизводимый расчет комиссии
Следующий пример моделирует одну распространенную структуру подписанной транзакции:
- 2 входа Native SegWit P2WPKH;
- 1 выход получателя P2WPKH;
- 1 выход сдачи P2WPKH;
- Счетчики CompactSize, каждый из которых помещается в один байт;
- 72-байтовые сериализованные подписи ECDSA в witness;
- и выбранная комиссионная ставка 12 sat/vB.
Это иллюстративная техническая модель, а не запись пользовательской транзакции или утверждение о конкретном кошельке. Окончательная длина подписи ECDSA может варьироваться, поэтому кошелек может зарезервировать немного другой максимальный входной Weight перед подписыванием.
От сериализации до окончательной комиссии
Два входа P2WPKH вносят по 41 базовому байту каждый. Два выхода P2WPKH вносят по 31 байту каждый. Фиксированные поля и однобайтовые счетчики входов и выходов добавляют еще 10 базовых байтов. Каждый моделируемый вход содержит 108 байтов witness: один байт счетчика элементов стека, один байт длины подписи, 72-байтовая сериализованная подпись, один байт длины открытого ключа и 33-байтовый сжатый открытый ключ.
| Компонент | Базовые байты | Байты свидетельства | Вклад в Weight |
|---|---|---|---|
| Версия, количество и время блокировки | 10 | 0 | 40 WU |
| Два входа P2WPKH | 82 | 216 | 544 WU |
| Два выхода P2WPKH | 62 | 0 | 248 WU |
| Маркер и флаг SegWit | 0 | 2 | 2 WU |
| Итого | 154 | 218 | 834 WU |
Weight
= (154 base bytes × 4) + 218 witness bytes
= 834 WU
vSize
= ceil(834 ÷ 4)
= 209 vB
Fee
= 209 vB × 12 sat/vB
= 2,508 sats
Каждое предположение видно. Измените количество входов, количество выходов, тип скрипта, размер свидетельства или ставку комиссии — и результат изменится. Чтобы смоделировать смешанные типы входов и выходов, откройте Калькулятор комиссии за транзакцию Bitcoin, введите структуру, показанную кошельком, и сравните оценку с финальным предпросмотром транзакции.
Один и тот же платеж, разная комиссия
Рассмотрим два кошелька, каждый из которых отправляет одинаковый платеж в 100,000-sat, создает один выход сдачи в P2WPKH и использует ставку комиссии 12 sat/vB. Единственное различие — количество входов P2WPKH.
Используя ту же модель 72-байтовой подписи, что и в рабочем примере:
| Смоделированная транзакция | Входы | Выходы | Weight | vSize | Комиссия при 12 sat/vB |
|---|---|---|---|---|---|
| Кошелек A | 1 P2WPKH | 2 P2WPKH | 562 WU | 141 vB | 1,692 sats |
| Кошелек B | 8 P2WPKH | 2 P2WPKH | 2,466 WU | 617 vB | 7,404 sats |
Получатель получает ту же сумму. Ставка комиссии та же. Кошелек B платит больше, потому что тратит больше входов и создает более крупную транзакцию.
Сумма может остаться неизменной. Структура транзакции — нет.
Оценка комиссии, которая не знает фактических UTXO кошелька, — это сценарий, а не финальная транзакция. Кошелек должен выбрать реальные входы, прежде чем сможет определить вероятный размер и комиссию.
Тип входа меняет стоимость
Количество входов — не единственная структурная переменная. Условия траты выбранных выходов определяют, что должен сериализовать каждый вход.
Распространенные профили с одной подписью включают Legacy P2PKH, вложенный SegWit P2SH-P2WPKH, Native SegWit P2WPKH и Taproot key-path P2TR. Они добавляют не одинаковый Weight.
| Распространенный профиль входа | Где появляются данные авторизации | Иллюстративный маржинальный размер | Важная граница |
|---|---|---|---|
| P2PKH | Базовая транзакция scriptSig | Около 148 vB | Длина подписи ECDSA может варьироваться |
| P2SH-P2WPKH | Программа погашения в scriptSig плюс свидетель | Около 91 vB | Вложенный SegWit включает данные обертки |
| P2WPKH | Свидетель | Около 68 vB | Длина подписи ECDSA может варьироваться |
| Путь ключа P2TR | Одиночная подпись Schnorr в свидетельстве | Около 58 vB | Нестандартный байт sighash добавляет один байт |
Эти цифры описывают обычные пути траты с одной подписью, а не каждую возможную транзакцию. Мультиподпись, P2WSH, пути скриптов Taproot, надписи, сложные скрипты и нестандартные конструкции могут нести совершенно разные данные свидетельства.
Тип вывода тоже важен, хотя адрес получения не всегда раскрывает точную будущую стоимость входа. Для сфокусированного сравнения кодировок адресов, совместимости и распространенных семейств скриптов читайте Типы адресов Bitcoin и их влияние на кошелек.
Почему оценки кошелька меняются
Оценка комиссии кошелька может измениться между формой оплаты и экраном подписания, даже если сумма получателя остается прежней. Некоторые решения по построению транзакции могут оставаться нерешенными, когда появляется первая оценка.
Выбор монет и сдача являются предварительными
Кошелек может изначально моделировать одно количество входов, а затем выбрать другой набор после учета статуса подтверждения, настроек контроля монет, правил конфиденциальности, избегания сдачи или необходимости покрыть комиссию. Как только входы известны, он может добавить, удалить или изменить тип вывода сдачи.
Документация Bitcoin Core fundrawtransaction документация отражает эти варианты: кошелек может добавлять входы, создавать не более одного выхода сдачи, выбирать тип сдачи, использовать ставку комиссии в sat/vB или вычитать комиссию из указанных выходов. Добавление входа увеличивает Weight. Добавление сдачи увеличивает размер выхода. Вычитание комиссии изменяет сумму получателя. Избегание крошечного выхода сдачи может переместить остаток в комиссию.
Подписи и ставки комиссии оцениваются
Подписи ECDSA не гарантированно имеют одинаковую сериализованную длину. Документация по финансированию транзакций Bitcoin Core советует использовать максимальный сериализованный размер подписи DER, когда предоставляется оценка внешнего входа Weight. Поэтому кошелек может зарезервировать безопасный максимум до того, как появятся фактические подписи.
Комиссия может также обновиться перед подписанием. Если кошелек получает более новую оценку или пользователь меняет цель подтверждения, выбранная ставка sat/vB меняется, даже если структура транзакции не меняется.
Это не случайные расхождения. Измененная комиссия должна соответствовать измененному набору входов, структуре выходов, предположению о размере подписи, оценке ставки комиссии или их комбинации.
Сетевой спрос определяет ставку
Структура транзакции определяет vSize. Сетевые условия влияют на ставку, которую кошелек выбирает для цели подтверждения.
Пространство блоков Bitcoin ограничено. Неподтвержденные транзакции конкурируют за включение, и ставка комиссии является одним из основных сигналов, используемых для сравнения того, сколько каждая транзакция платит относительно своего виртуального размера. Кошелек может выбрать более высокую ставку для более агрессивной цели или более низкую ставку, когда пользователь принимает большую задержку.
Документация Bitcoin Core estimatesmartfee RPC возвращает приблизительную ставку комиссии для начала подтверждения транзакции в течение запрошенного количества блоков, когда доступно достаточно данных. Он использует виртуальный размер транзакции и предоставляет два режима оценки:
- Экономичный быстрее реагирует на краткосрочные падения ставок комиссии и может вернуть более низкую оценку.
- Консервативный использует более длинную историю, медленнее реагирует на краткосрочные падения и может вернуть более высокую оценку.
Ни один из режимов не резервирует место в блоке. Оценка основана на наблюдаемом поведении, а не на обещании, что майнер включит транзакцию в конкретный блок.
Кошельки, обозреватели и сервисы могут использовать разные временные окна, представления мемпула, запасы безопасности и метки целей. Поэтому два интерфейса могут рекомендовать разные ставки в один и тот же момент, не применяя разные правила консенсуса Bitcoin.
Не существует единой глобальной очереди мемпула, которую каждый узел видит в точно таком же порядке. Узлы получают транзакции в разное время и применяют свои собственные настройки политики. Оценка кошелька описывает данные, доступные его источнику комиссии; майнер в конечном итоге выбирает из транзакций и политик, доступных этой майнинговой операции.
Финальная подписанная транзакция
Перед подписанием кошелек оценивает данные авторизации, необходимые для каждого входа. После подписания транзакция содержит фактические подписи и стеки witness. Финальная сериализация раскрывает реальные Weight, vSize, общую комиссию и эффективную ставку комиссии.
Поэтому экран подписания следует рассматривать как более авторитетный, чем ранняя оценка при вводе суммы. Он может показать, что кошелек выбрал больше входов, чем ожидалось, добавил сдачу, использовал другой тип выхода, создал другой размер подписи или обновил ставку комиссии перед авторизацией.
Платежные реквизиты могут быть правильными, но структура транзакции все равно заслуживает дополнительной проверки. Проверьте оба перед отправкой.
Изменения комиссии после отправки
Отправка передает транзакцию пирам. Это не гарантирует, что каждый узел примет и сохранит ее или что она появится в следующем блоке. Новые транзакции могут войти в рынок комиссий после вашей, делая исходную ставку менее конкурентоспособной.
Некоторые кошельки могут создать замену с более высокой комиссией, если неподтвержденная транзакция имеет право на повышение комиссии. Bitcoin Core’s bumpfee workflow может сократить или добавить входные данные при необходимости, что означает, что размер заменяющей транзакции и общая комиссия могут отличаться от исходных.
Прочитайте предварительный просмотр кошелька
Перед подписанием проверьте цифры, определяющие комиссию, а не полагайтесь на одну строку “сетевая комиссия”.
- Сумма получателя: Подтвердите сумму, назначенную предполагаемому получателю, и вычитается ли комиссия из этого вывода.
- Выбранные входные данные: Большее, чем ожидалось, количество входных данных объясняет многие увеличения комиссии.
- Выходы и сдача: Подтвердите выходы получателя, выход сдачи и адрес сдачи.
- Виртуальный размер: Проверьте показатель vB, если кошелек его отображает.
- Комиссионная ставка: Отличайте ставку в sat/vB от абсолютной комиссии в sats.
- Общая комиссия: Подтвердите общее количество satoshi, которое платит вся транзакция.
- Цель подтверждения: Относитесь к ней как к оценке и обратите внимание, может ли кошелек позже увеличить комиссию.
Наиболее полезная перекрестная проверка — арифметическая:
Does the displayed vSize × displayed sat/vB
approximately match the displayed fee in sats?
Небольшая разница может возникнуть из-за десятичной ставки комиссии, округления до целых satoshi или округленных отображаемых значений. Большая необъяснимая разница заслуживает повторной проверки перед подписанием.
Для более широкого контекста о UTXOs, подтверждениях, майнерах и валидации перейдите к Bitcoin сеть и справочник по транзакциям.
Что оценка не может гарантировать
Полная оценка комиссии может описать транзакцию и выбранную ставку. Она не может гарантировать:
- подтверждение в следующем блоке или в точное время;
- принятие и дальнейшее хранение каждым узлом;
- неизменный спрос в сети после подписания транзакции;
- или что кошелек выбрал наиболее приватные и экономичные входы или никогда не потребует увеличения комиссии.
Воспроизводимый вопрос уже: при данной структуре транзакции и данной ставке комиссии, сколько satoshis платит транзакция? Время подтверждения остается вероятностным.
Bitcoin Часто задаваемые вопросы о комиссиях
Основаны ли комиссии Bitcoin на отправляемой сумме?
Нет. Комиссии Bitcoin в основном зависят от виртуального размера транзакции и выбранной ставки комиссии. Отправляемая сумма может влиять на то, какие UTXOs нужны кошельку, но больший платеж не автоматически создает большую комиссию.
Что означает sat/vB?
Sat/vB означает satoshis за виртуальный байт. Это ставка комиссии, применяемая к виртуальному размеру транзакции. Умножение vSize на ставку комиссии дает расчетную общую комиссию в satoshis.
Почему моя комиссия Bitcoin изменилась до подписания?
Кошелек может выбрать другие входы, добавить или удалить сдачу, изменить тип сдачи, зарезервировать другой размер подписи или обновить ставку комиссии. Любое из этих изменений может изменить итоговую комиссию.
Почему два кошелька могут взимать разные комиссии за один и тот же платеж?
Кошельки могут контролировать разные UTXOs, выбирать разные входы, создавать разные выходы сдачи, использовать разные оценки ставок комиссии или применять разные запасы безопасности. Сумма получателя может быть одинаковой, а структуры транзакций различаться.
Гарантирует ли более высокая комиссия Bitcoin более быстрое подтверждение?
Нет. Более высокая ставка комиссии может улучшить относительный приоритет транзакции, но не может гарантировать конкретный блок. Будущий спрос, выбор майнеров, политика мемпула и обнаружение блоков остаются вне контроля кошелька.
Можно ли увеличить комиссию Bitcoin после трансляции?
Некоторые кошельки могут создать замену с более высокой комиссией, если исходная транзакция подходит для увеличения комиссии. Замена может уменьшить сдачу или добавить входы, поэтому ее размер и общая комиссия могут измениться.
Технические источники
Формулы и границы построения транзакций в этом руководстве основаны на первичных спецификациях Bitcoin и документации Bitcoin Core.
- BIP 141: Segregated Witness — определяет размер Weight транзакции, базовый размер, общий размер и виртуальный размер транзакции.
- Справочник разработчика транзакций Bitcoin — документирует сериализованные входы и выходы и объясняет, что значения выходов записываются в satoshis.
- Bitcoin Core 31.0 estimatesmartfee RPC — документирует оценку ставки комиссии по целевому времени подтверждения, использование виртуального размера и экономичный и консервативный режимы.
- Bitcoin Core 31.0 fundrawtransaction RPC — документирует автоматический выбор входов, создание сдачи, настройки ставки комиссии, вычитание комиссии и предположения о размере входа-Weight.
- Bitcoin Core 31.0 bumpfee RPC — документирует замену комиссии кошельком и как транзакция с более высокой комиссией может уменьшить сдачу или добавить входы.
- BIP 341: Taproot — определяет подписи по ключевому пути Taproot и поведение свидетелей, используемые в общей модели размера входа P2TR.
Источники
Нашли ошибку? Сообщить о проблеме с контентом или прочитайте наши Политика исправлений.