Оглавление
Биткоин, безусловно, является наиболее ценной и, как следствие, самой востребованной криптовалютой, но даром ничего не дается. Высокий спрос на открытую денежную систему без границ и ограничений сопряжен с ростом комиссий. Но как они рассчитываются?
Одним из самых сложных аспектов понимания Биткойна является изменение парадигмы в отношении того, как происходит обработка транзакций, что часто становится источником шока для пользователей, впервые сталкивающихся с высокими комиссиями. В этой статье я попытаюсь пролить некоторый свет на часто неверно понимаемый мир комиссий за биткоин-транзакции, а также поделюсь некоторыми лучшими практиками в отношении того, как можно научиться экономить на комиссиях при совершении транзакций в основной сети Биткойна.
В завершение я упомяну о нескольких дополнительных технических опциях, подробное рассмотрение которых, впрочем, представляет собой тему скорее для отдельных статей.
Биткойн в сравнении с фиатом: новый взгляд на стоимость обработки транзакций
Первый шаг в понимании биткоин-транзакций состоит в понимании разницы между тем, как рассчитываются комиссии в Биткойне по сравнению с традиционной финансовой системой. Эти два рынка трансфера стоимости принципиально различны, поэтому то, как они реагируют на рыночную ситуацию и сами цены, также зависит от различных факторов. Попытки прямого переноса привычек или опыта между этими рынками потенциально может стать источником изрядной головной боли для новых пользователей Биткойна.
Суть различия между ними заключается в понимании того, за что именно вы платите. При сравнении с Биткойном я буду ориентироваться главным образом на операции по кредитным картам, поскольку с ними мы сталкиваемся чаще всего в повседневной жизни. В случае операций по кредитным картам, как и банковских переводов, тремя основными потребляемыми ресурсами и, следовательно, источниками накладных расходов являются:
- администрация и бюрократические накладные расходы (все программные системы, точки продаж, терминалы, аудиторы и т. д.);
- принятие риска с момента инициирования транзакции до момента окончательного расчета по ней — обычно посредником вроде Visa, но часто также и продавцами в форме риска отмены платежа;
- ликвидность.
За поддержку операций по кредитным картам продавцы часто платят 1–3% комиссии с каждой транзакции. Для нашего сравнения с Биткойном здесь актуальны две характеристики:
- комиссия за транзакцию зависит от ее суммы ($3 за $100 транзакцию и $30 за $1000 транзакцию);
- эта комиссия скрыта и часто заложена в цену приобретаемого товара или услуги, а не указывается отдельно в квитанции.
В Биткойне ситуации совершенно иная. Здесь нет затрат на точки продаж и банкоматы, нет административных расходов, ограничений ликвидности и практически отсутствует риск контрагента. Так за что же вы платите? Не слишком вдаваясь в технические подробности, Биткойн обрабатывает транзакции путем распространения их по сети через ноды, включения их в блоки майнерами, а также распространения, проверки и сохранения полученных блоков на каждой полной ноде.
Все расходы здесь связаны с хранением данных и проверкой криптографических подписей. Чем больше данных вы хотите поручить ответственности других участников сети, тем больше вам придется заплатить за такую привилегию. Это можно сравнить с потребностью в более дорогом тарифном плане, если вы хотите сутками стримить фильмы в HD-качестве на своем мобильном, а не просто периодически проверять электронную почту. Еще одна аналогия — оплата в зависимости от веса при отправке посылки: вы платите больше за более быструю доставку, за больший вес и, часто, за доставку в пиковые периоды (например, в Рождество).
Иными словами, Биткойн допускает ценовую дискриминацию и приоритетную обработку, что, с экономической точки зрения, может обеспечить также более эластичную кривую спроса: тот, кому важно, чтобы его транзакция была обработана быстрее, платит более высокую комиссию, тем самым отчасти субсидируя обработку транзакций для всех остальных.
Наконец, последняя характеристика, о которой следует помнить в отношении биткоин-транзакций: один из способов, которым протокол помогает ограничить стоимость обработки данных для всех участников сети (а также ограничить эффект безбилетника), состоит в ограничении пространства блока, то есть максимально допустимого количества данных, которые можно записать в каждый блок (от ~1 Мб до 4 Мб в зависимости типа транзакций, однако это уже выходит за рамки статьи). Это означает, что по мере увеличения спроса на обработку транзакций объем относительного доступного пространства блока сокращается.
Больше данных — больше проблем
Последствия такого типа рынка комиссий создают довольно интересную динамику. Помимо возможности платить за приоритет, самое важное отличие заключается в том, что комиссия рассчитывается не из суммы транзакции (привычный большинству людей вариант), а исходя из того, сколько данных вы передаете. Это означает, что обработка транзакции на $100 может стоить дороже, чем обработка транзакции на $1 млн. В качестве конкретного примера рассмотрим эту биткоин-транзакцию, отправленную в апреле 2020 года, в которой BTC на сумму $1,1 млрд были отправлены в одной транзакции с комиссией 0,0001BTC или около $0,68 на тот момент.
Чтобы понять, как можно минимизировать стоимость транзакции, нужно понять, какие данные при этом отправляются и в какой мере мы можем это контролировать.
В некотором приближении биткоин-транзакцию можно рассматривать как состоящую из трех частей:
- «метаданные» — обязательные поля с информацией о транзакции;
- входы — за счет каких средств финансируется транзакция;
- подписи или witness — то, как вы подтверждаете право собственности на BTC, которые хотите отправить;
- метаданные входа — информация о расходуемых BTC;
- выходы — количества и адресаты для отправляемых BTC.
Неплохо. Комиссия $0,89 при цене биткоина в $50 тыс. и сравнительно высокой ставке 10 сат./байт.
Выходы
Каждый дополнительный выход добавляет к сумме ~34 байта. Большинство транзакций имеют два выхода: исходящий (к адресату) и обратный для возврата остатка BTC (сдачи) в кошелек отправителя, так что это, пожалуй, и будет наилучшей точкой отсчета.
Разница ~16%. Для настолько простых случаев транзакция с одним выходом — работоспособный вариант снижения относительных затрат, но по мере усложнения транзакций получаемая разница составляет уже меньший процент. Входы — вот где все становится немного сложнее и где, по-видимому, скрываются наибольшие возможности для экономии.
Входы
Сумма ваших входов должна равняться той сумме, которую вы собираетесь отправить. Входы состоят из единиц ранее полученных биткоинов. Они также известны как непотраченные выходы транзакций, или UTXO (от Unspent Transaction Output).
Допустим, что у меня есть адрес, на который я отправляю 0,1BTC каждый месяц.
На конец года баланс этого адреса составляет 1,2BTC, состоящий из 12 UTXO по 0,1BTC каждый.
Теперь предположим, что я хочу отправить с него 1BTC. К сожалению, в моем кошельке нет ни одного UTXO, достаточно большого, чтобы покрыть эту сумму. Вместо этого, мне придется использовать 11 из моих 12 входов — 10 для покрытия суммы в 1BTC плюс еще один для уплаты комиссии.
Данные для входов занимают ненамного больше места, чем данные для выходов — ~41 байт, — но для проверки входов нужны также подписи, и они «весят» по ~73 байта каждая. Так что для каждого входа мы добавляем по ~114 байт.
11 входов => метаданные + 11 входов + 2 выхода = 30 + 11*114 + 2*34 = 1352 байта * 10 сат./байт = 13 520 сат.
В качестве примера того, как далеко это может зайти, взгляните на самую объемную транзакцию, когда-либо отправленную в блокчейне Биткойна: 5568 входов по 0,00001BTC каждый и 1 выход, получающий 0,05569BTC = 1 Мб данных. То есть одна транзакция заняла весь блок целиком.
Мультиподпись (Multisig)
Multisig-адреса, или адреса с мультиподписью, — еще один шаг вперед по этой шкале. Это довольно большая тема, но что имеет отношение к сегодняшнему разговору, так это то, что multisig-входы требуют гораздо большего количества данных (для всех возможных намерений и целей, хотя выход к multisig-адресу совершенно неотличим от обычных адресов).
Обычный вход с одной подписью требует только подписи и некоторых метаданных, которые сообщают ноде, где найти и проверить UTXO, расходуемый в этой транзакции:
Для multisig-входа требуются:
- список всех открытых ключей, которые могут подписывать эту транзакцию (для транзакции типа два-из-трех это означает 3 открытых ключа);
- подпись для каждого подписывающего ключа (в транзакции типа два-из-трех это две подписи);
- обычные метаданные входа для ссылки на UTXO в блокчейне;
- дополнительные метаданные, описывающие «скрипт».
Таким образом, для нашего примера с multisig-адресом типа 2-из-3 каждый дополнительный вход, который в предыдущем примере добавлял только ~114 байт на вход, будет добавлять ~293 байта, на 157% больше. В примере с транзакцией с 11 входами это означало бы, что вместо 1254 байт на вход нам пришлось бы заплатить сети за обработку 3223 байт данных — почти в 3 раза больше. Образно выражаясь, это почти как заплатить за доставку м3 камней, вместо м3 подушек.
11 multisig-входов = база + 11 входов + 2 выхода = 30 + (11 * 293) + (34 * 2) = 3321 * 10 сат./байт = 33 210 сат.
33 210 сат. комиссий, вместо 14 740. В более загруженной сети ставку комиссии можно было бы увеличить до 20 сат./байт для более надежного подтверждения, что в результате дало бы 66 420 сат. вместо 29 480. При цене $10 тыс. за BTC это дает около $6,50 вместо $2,95, но при цене $50 тыс. за BTC эти цифры подскакивают до $32,50 за multisig-транзакцию с 11 входами вместо $14,75 за транзакцию с одной подписью и 11 входами.
Что делать при высоких комиссиях
Итак, мы получили довольно неприятную цифру: $32,50 за отправку одной транзакции! Однако, как уже отмечалось выше, протокол Биткойна создает рынок комиссий. И хотя это может приводить к повышению комиссий, это также побуждает пользователей — будь то крупные биржи или частные лица — ответственней относиться к ресурсам сети, насколько это возможно, а также придерживаться лучших доступных практик.
Итак, давайте поговорим о некоторых стратегиях снижения комиссий. В основном мы сосредоточимся на довольно простых решениях, игнорируя более технически изощренные, но в конце статьи я предоставлю небольшой список несколько более продвинутых методов для тех, кто захочет погрузиться в тему глубже.
Снижайте размер комиссии, если вы не торопитесь
Самое простое решение — воспользоваться настройкой размера комиссии в вашем кошельке. Многие кошельки и хранилища предлагают такую возможность при создании транзакций. Если вам необязательно, чтобы ваша транзакция была обработана в ближайшие час или два, вы можете уменьшить ставку комиссии.
Однако важно при этом устанавливать ее на разумный уровень. Как мы уже видели, при большом числе входов, даже умеренно высокая ставка в результате может дать очень высокую суммарную комиссию. С другой стороны, если сеть сильно перегружена, слишком низкая комиссия может привести к тому, что ваша транзакция застрянет в очереди. В конечном счете большинство нод отбрасывают транзакции, которые не были подтверждены в блоке в течение трех дней. Я рекомендую пользоваться ресурсом mempool.space для проверки состояния сети и определения оптимального размера комиссии. На их сайте представлена информация о низких, средних и высокоприоритетных комиссиях (чем ниже, тем дольше будет подтверждаться транзакция), а также о том, какие комиссии вытесняются в данный момент (т. е. они с большой вероятностью застрянут, и вам в конечном счете придется повторно транслировать транзакцию с более высокой комиссией).
Подождите дня с меньшей загруженностью сети
Если меньше людей пытаются отправить транзакции, то конкуренция за пространство текущего блока размером в 1 Мб ниже, и транзакции с меньшей комиссией, скорее всего, будут обработаны в разумное время. Обычно в выходные дни активность сети снижается, так что это может быть хорошим временем для отправки несрочных транзакций. На mempool.space есть также графики, показывающие количество ожидающих подтверждения транзакций с течением времени, организованных по размеру комиссии. Представляется разумным, по возможности, планировать расходы на те дни, когда график загруженности сети находится на минимумах.
Если вы хотите получать уведомления об изменениях на рынке комиссий, вместо того, чтобы проверять mempool.space вручную, то можете попробовать этот псевдонимный и не применяющих kyc-процедур инструмент для информирования по электронной почте: https://txfees.watch.
Консолидируйте свои UTXO
Этот подход сочетает два вышеописанных с еще одной стратегией. Это может быть одним из самых эффективных и простых способов сэкономить на транзакциях с течением времени, однако подразумевает несколько более активное управление кошельком. (Обратите внимание также, что объединение UTXO в соответствии с этим подходом имеет последствия для конфиденциальности, впрочем, этот аспект выходит за рамки сегодняшней статьи.)
Давайте вернемся к нашему примеру с 11 входами, но вместо 10 или 20 сат./байт, mempool.space говорит нам, что для получения среднего приоритета в очереди транзакций потребуется комиссия 80 сат./байт. Это означало бы, что для подтверждения нашей транзакции размером в 3321 байт в ближайшие пару часов потребуется 265 680 сат., или $134 при цене $50 тыс. за BTC.
Шаг первый: выберите время с низкими комиссиями
Предположим, что на 6 и 12 месяцах удержания биткоинов вы проверяете mempool.space и обнаруживаете, что комиссии довольно низкие, особенно в выходные дни, и вы можете рассчитывать на подтверждение транзакции в течение дня при ставке 5 сат./байт.
Шаг второй: отправьте транзакцию самому себе
Так консолидируются UTXO
Итак, в период до 6 месяца мы шесть раз отправили себе по 0,1BTC на общую сумму 0,6BTC. Теперь комиссии низкие, и мы хотим объединить шесть наших непотраченных выходов (UTXO) через транзакцию самому себе, в которой будет создан один новый UTXO.
Метаданные + 6 multisig-входов + 1 выход = 30 + (6 * 293) + (34 * 1) = 1822 байт * 5 сат./байт = 9110 сат.
Для простоты и наглядности будем держать цену BTC на уровне $50 тыс., и тогда за эту первую консолидацию UTXO мы заплатим $4,50.
К 12 месяцу у нас появилось шесть новых UTXO по 0,1BTC плюс старый 0,5999089BTC (0,6BTC – 9110 сат. уплаченной комиссии). Тем временем мы подписались на оповещения от txfees.watch и получили на имейл уведомление о низких комиссиях сети. Воспользуемся этой возможностью для очередной консолидации.
База + 7 multisig-входов + 1 выход = 30 + (7 * 293) + (34 * 1) = 2115 байт * 5 сат./байт = 10 575 сат. или ~$5,30
Обратите внимание, что, несмотря на то, что один из UTXO по стоимости значительно превышает другие, это не влияет на то, сколько стоит его обработка. Обработка одного UTXO на 0,599BTC стоит столько же, сколько обработка UTXO на 0,1BTC (или даже 0,0001BTC).
Итак, теперь мы заплатили за консолидацию UTXO в общей сложности $9,80, объединив баланс 1,1998BTC всего в один UTXO.
Приближается период уплаты налогов, и вы хотели бы внести взнос в биткоинах в свой частный пенсионный фонд (конечно, если эти покупки были сделаны от имени юр. лица вашего пенсионного фонда). Однако комиссии сумасшедшие — 80 сат./байт даже в выходные. Вы не можете ждать снижения комиссий, потому что дедлайн уплаты налогов быстро приближается. К счастью, вы заранее консолидировали свои UTXO! Давайте посмотрим, во сколько обойдется депонировать ваш 1BTC на счет пенсионного фонда (два выхода: один на адресата и один для остатка).
База + 1 multisig-вход + 2 выхода = 30 + (1 * 293) + (34 * 2) = 391 * 80 сат./байт = 31 280 сат. или $15,64
Общая сумма, которую мы потратили на комиссии за отправку 1BTC сократилась со $134 в примере с одной транзакцией с 11 входами до $25,44 за три транзакции при консолидационном подходе — экономия 80%!
В заключение
Цель этого поста состояла в том, чтобы внести чуть больше ясности в рынок комиссий за биткоин-транзакции. Технические детали я подчас опускал, чтобы сделать статью как можно более удобоваримой, так что заранее прошу меня извинить за любые возможные технические оплошности и связанное с этим искажение цифр. Однако изложенные принципы должны оставаться в силе несмотря на любые подобные искажения. Надеюсь, что эта информация еще пригодится вам при взаимодействии с Биткойном.
Однако это ни в коем случае не единственные возможные способы экономии на комиссиях. Другие более технические стратегии, некоторые из которых требуют предварительной поддержки со стороны вашего кошелька, выходят за рамки этой статьи. Но для полноты картины и в качестве дополнительной информации для любознательных я перечислю несколько технологий, заслуживающих почетного упоминания в этом контексте:
- Segregated Witness (Segwit) — это обновление протокола Биткойна, активированное еще в 2017 году. Помимо появления нового формата адресов (если вы встречали адрес, начинающийся с «bc1», это признак того, что адрес поддерживает технологию SegWit), с этим обновлением было добавлено несколько технологических улучшений. В контексте комиссий наиболее примечательным является добавление нового расширения для блоков, в котором могут храниться данные подписи, отдельно от прочих данных блока. Это увеличивает теоретическую максимальную емкость блока с 1 Мб до ~4 Мб. Чтобы стимулировать использование этого нового формата, был введен определенный дисконт, так что отправка подписей нового типа, называемых также «witness» (которые составляют большую часть веса транзакции, особенно в случае мультиподписи), обходится до 75% дешевле, если они хранятся в этом расширении.
- Replace-by-fee (RBF) и Child Pays For Parent (CPFP) — хотя они не приводят напрямую к снижению комиссий, с помощью каждой из этих стратегий «застрявшие» транзакции можно поднять в очереди, заплатив более высокую комиссию. Их можно использовать для «тестирования» рынка комиссий: если транзакция «зависнет», вы сможете повысить ее приоритет позже.
- lightning Network — если вам нужно совершать много частых и, как правило, небольших транзакций, то платить комиссию за запись ончейн каждой из них, вероятно, покажется вам нежелательным. Lightning Network — это то, что называют технологией «второго уровня», которая позволяет отправить даже несколько сатоши за весьма скромную плату. Это еще очень новое решение и, возможно, подходит не для всех случаев, однако оно быстро развивается и поддержка его со временем увеличивается.