Калькулятор комиссии транзакции Bitcoin
Комиссия Bitcoin — это виртуальный размер транзакции, умноженный на ставку комиссии, которую вы платите. Укажите число входов и выходов транзакции, выберите тип адреса и задайте ставку в sat/vB. Результат обновляется по мере ввода.
- Служебные данные (version, counters, locktime)
- 10,5 vB
- 1 × 68 vB на вход
- 68 vB
- 2 × 31 vB на выход
- 62 vB
Виртуальный размер сериализованной транзакции. Данные witness учитываются как четверть их фактического размера в байтах, поэтому вход SegWit меньше в vBytes, чем в исходных байтах.
Цена, которую вы предлагаете за vByte. Майнеры сортируют mempool именно по этой ставке, поэтому не итоговая сумма, а ставка определяет, как быстро подтвердится транзакция.
Каждая потраченная монета добавляет в транзакцию полноценный вход. Кошелёк со множеством мелких UTXO платит за тот же платёж больше, чем кошелёк с одним крупным.
Отправляйте Bitcoin прямо из своего кода
7 дней тестирования, без кредитной карты и KYC.
Как рассчитывается комиссия за транзакцию Bitcoin
Комиссия — это произведение двух чисел: комиссия = размер в vBytes × ставка комиссии в sat/vB. Это вся формула целиком. Всё остальное на этой странице — про то, откуда берётся размер, потому что ставку вы выбираете сами, а размер вам навязывает сама транзакция.
Чего нет в формуле нигде — так это суммы перевода. Транзакция, перемещающая 0,001 BTC, и транзакция, перемещающая 50 BTC, стоят одинаково, если у них одинаковая форма. Bitcoin берёт плату за место в блоке, а не за стоимость, поэтому платёжная система, построенная на нём, ведёт себя совсем не так, как система с процентной комиссией.
Ставка комиссии — это ставка в аукционе. Майнеры заполняют следующий блок транзакциями с максимальным sat/vB, какие у них есть, поэтому ставка определяет вашу позицию в очереди, а размер определяет, во что эта позиция вам обойдётся. Повышать ставку для крупной транзакции дорого в абсолютном выражении; та же ставка для маленькой — дёшево. Подтверждаются они одновременно.
Почему vBytes, а не байты
До SegWit блок был ограничен 1 МБ сериализованных данных транзакции, и каждый байт считался одинаково. SegWit заменил это ограничение лимитом в 4 миллиона weight units и дал двум частям транзакции разный вес: базовые данные (всё, кроме witness) считаются как 4 weight units за байт, данные witness — как 1. Виртуальный размер — это вес, делённый на четыре, то есть vsize = (базовые байты × 3 + все байты) / 4.
Практический эффект: подписи переехали в witness, а подписи составляют основную часть input. Legacy-вход P2PKH несёт свою подпись и публичный ключ в scriptSig, а это базовые данные с полным весом, и весит около 148 vB. Вход P2WPKH несёт тот же материал в witness с четвертью веса и весит около 68 vB. Байты в канале передачи почти не изменились. Изменилось то, сколько места в блоке они занимают.
Поскольку скидка на witness делит на четыре, виртуальные размеры часто оказываются дробными. Маркер и флаг SegWit — это два байта witness, то есть половина vByte. Калькулятор округляет итог до целого vByte вверх — так же поступает и нода, когда сообщает vsize.
Размеры входов и выходов по типу адреса
Это оценки для одиночной подписи, которые использует калькулятор. Входы отличаются почти втрое между самым старым и самым новым типом; выходы меняются гораздо меньше, и выходы Taproot — самые крупные из трёх.
| Тип | Префикс | Вход | Выход |
|---|---|---|---|
| Legacy (P2PKH) | 1… |
~148 vB | 34 vB |
| SegWit (P2WPKH) | bc1q… |
~68 vB | 31 vB |
| Taproot (P2TR) | bc1p… |
~57,5 vB | 43 vB |
Сверх входов и выходов есть фиксированные накладные расходы: версия, счётчики входов и выходов и locktime. Это 10 vB для legacy-транзакции и около 10,5 vB с учётом маркера и флага SegWit. Значение для входа Taproot — 57,5 vB, а не круглое число, потому что подпись Schnorr весит 64 байта и после деления на четыре попадает на половину vByte.
Разобранные примеры
Возьмём самую распространённую форму на практике: один вход, два выхода, где второй выход — это ваш собственный адрес сдачи.
Полностью legacy: 10 + 148 + 2 × 34 = 226 vB. При 10 sat/vB комиссия — 2 260 sat, или 0,00002260 BTC.
Полностью SegWit: 10,5 + 68 + 2 × 31 = 140,5 vB, округляется до 141. При той же ставке это 1 410 sat — снижение примерно на 38% для идентичного платежа. Экономия почти полностью приходится на вход.
Полностью Taproot: 10,5 + 57,5 + 2 × 43 = 154 vB, то есть 1 540 sat. На этой форме Taproot проигрывает SegWit, потому что его выходы стоят на 12 vB дороже каждый, а его вход экономит только 10,5 vB. Поменяйте форму местами — и рейтинг перевернётся: два входа и один выход дают 169 vB для Taproot против 178 vB для SegWit. Taproot окупается, когда вы тратите много монет, а не когда вы их создаёте.
Теперь консолидация. Двадцать входов P2WPKH в один выход — это 10,5 + 20 × 68 + 31 = 1 401,5 vB, округляется до 1 402. При 3 sat/vB это стоит 4 206 sat. Тот же кошелёк при обычном платеже с одного из этих входов заплатил бы около 423 sat. Десятикратный размер при десятикратно меньшей ставке — вот сделка, которую совершает консолидация, и она имеет смысл, только пока мемпул спокоен.
Одна закономерность проходит через все четыре примера: количество входов — доминирующее слагаемое. Кошелёк, получивший сто мелких платежей, держит сто UTXO, и их трата стоит сто входов независимо от того, как мало стоит каждый из них. Ниже определённой ставки комиссии UTXO стоит потратить дороже, чем в нём содержится.
Что оценка не учитывает
Размеры выше предполагают траты с одной подписью и единый тип адреса для всех входов и выходов. Три вещи меняют реальное число:
Длина подписи меняется. DER-кодированная подпись ECDSA обычно весит 71 или 72 байта, изредка 70, поэтому каждый legacy- или P2WPKH-вход может отличаться от оценки на байт. Подписи Schnorr фиксированы на 64 байтах, поэтому траты Taproot — единственные, чей размер предсказуем заранее совершенно точно.
Смешанные типы — это нормально. Кошельки часто тратят legacy-вход и отправляют на bech32-адрес со сдачей bech32. Считайте каждую часть по своей строке из таблицы и добавьте накладные расходы один раз; калькулятор применяет один тип ко всему — это правильная модель для транзакции одного кошелька и приближение для всего остального.
Мультиподпись и script-траты — это совершенно другой класс. Вход 2-из-3 P2WSH в несколько раз крупнее входа с одной подписью, а script-path трата Taproot несёт скрипт и control block в witness. Ни то ни другое здесь не учтено.
Чтение и оплата комиссий из кода
Оценка комиссии полезна только рядом с актуальной ставкой, а ставка берётся из мемпула, а не из формулы. Bitcoin-эндпоинты Chaingateway снимают эту задачу с вас: POST /api/v2/bitcoin/transactions принимает speed со значением fast, medium или slow и подбирает комиссию соответственно, плюс флаг subtractfee, который вычитает комиссию из отправляемой суммы, а не добавляет её сверху. Этот флаг важнее, чем кажется: это разница между тем, получит ли получатель ровно ту сумму, что указана в вашем инвойсе, или немного меньше.
Полный список эндпоинтов, включая блоки, кошельки и вебхуки транзакций, — на странице Bitcoin API. Другие калькуляторы и справочные инструменты собраны в разделе Инструменты.
Часто задаваемые вопросы
Как рассчитывается комиссия транзакции Bitcoin?
Размер в vBytes, умноженный на ставку комиссии в сатоши за vByte. Транзакция на 141 vB при ставке 10 sat/vB платит 1410 sat. Отправляемая сумма в расчёт никогда не входит.
Что такое vByte?
Виртуальный байт — единица, в которой с появлением SegWit измеряются блоки. Вес транзакции считает базовые данные по 4 единицы за байт, а данные witness — по 1, а vsize — это вес, делённый на четыре. Поэтому байты witness обходятся в четыре раза дешевле базовых байтов.
Какой размер у типичной транзакции Bitcoin?
Для одного входа и двух выходов: около 226 vB для чистого legacy, 141 vB для чистого SegWit, 154 vB для чистого Taproot. Каждый дополнительный вход добавляет 148, 68 или 57,5 vB в зависимости от типа — именно поэтому число входов влияет на комиссию больше всего остального.
Влияет ли отправляемая сумма на комиссию?
Нет. Bitcoin взимает плату за место в блоке. Отправка 0,001 BTC и отправка 50 BTC стоят одинаково, если у обеих транзакций одинаковое число входов и выходов и одинаковые типы адресов.
Почему больше входов делает транзакцию дороже?
Каждая потраченная монета — это отдельный вход со своей подписью, а подпись занимает большую часть размера входа. Десять мелких UTXO при трате обходятся в десять входов. Именно поэтому кошельки объединяют UTXO в спокойные периоды, когда ставка sat/vB достаточно низкая, чтобы одна крупная разовая транзакция обошлась дёшево.
Что означает sat/vB?
Сатоши за виртуальный байт — цена, которую вы предлагаете за место в блоке. Один сатоши равен 0,00000001 BTC, то есть 100 000 000 sat составляют один BTC. Майнеры сортируют mempool именно по этой ставке, поэтому не итоговая комиссия, а ставка определяет, как быстро подтвердится транзакция.
Taproot дешевле, чем SegWit?
Только когда в транзакции много входов. Вход P2TR весит около 57,5 vB против 68 vB у P2WPKH, а вот выход P2TR — 43 vB против 31 vB. Один вход и два выхода дают 154 vB на Taproot и 141 vB на SegWit; два входа и один выход меняют картину местами — 169 vB против 178 vB.
Почему мой кошелёк показывает немного другую комиссию?
Три обычные причины. Подписи ECDSA варьируются от 70 до 72 байт, поэтому каждый вход legacy или P2WPKH может отличаться от оценки на байт. Кошельки часто смешивают типы адресов между входами, платёжным выходом и выходом сдачи. И кошелёк выбирает свою ставку комиссии на основе собственного взгляда на mempool, тогда как этот калькулятор использует ставку, которую вводите вы.