Все о комиссиях. Понимание стоимости биткойн-транзакций
Биткойн, безусловно, является наиболее ценной и, как следствие, самой востребованной криптовалютой, но даром ничего не дается. Высокий спрос на открытую денежную систему без границ и ограничений сопряжен с ростом комиссий. Но как они рассчитываются?
Одним из самых сложных аспектов понимания Биткойна является изменение парадигмы в отношении того, как происходит обработка транзакций, что часто становится источником шока для пользователей, впервые сталкивающихся с высокими комиссиями. В этой статье я попытаюсь пролить некоторый свет на часто неверно понимаемый мир комиссий за биткойн-транзакции, а также поделюсь некоторыми лучшими практиками в отношении того, как можно научиться экономить на комиссиях при совершении транзакций в основной сети Биткойна.
Статья разбита на три части, так что не стесняйтесь что-то пропускать и переходить прямо к тому, что вызывает у вас наибольший интерес:
В завершение я упомяну о нескольких дополнительных технических опциях, подробное рассмотрение которых, впрочем, представляет собой тему скорее для отдельных статей.
Биткойн в сравнении с фиатом: новый взгляд на стоимость обработки транзакций
Первый шаг в понимании биткойн-транзакций состоит в понимании разницы между тем, как рассчитываются комиссии в Биткойне по сравнению с традиционной финансовой системой. Эти два рынка трансфера стоимости принципиально различны, поэтому то, как они реагируют на рыночную ситуацию и сами цены, также зависит от различных факторов. Попытки прямого переноса привычек или опыта между этими рынками потенциально может стать источником изрядной головной боли для новых пользователей Биткойна.
Суть различия между ними заключается в понимании того, за что именно вы платите. При сравнении с Биткойном я буду ориентироваться главным образом на операции по кредитным картам, поскольку с ними мы сталкиваемся чаще всего в повседневной жизни. В случае операций по кредитным картам, как и банковских переводов, тремя основными потребляемыми ресурсами и, следовательно, источниками накладных расходов являются:
За поддержку операций по кредитным картам продавцы часто платят 1–3% комиссии с каждой транзакции. Для нашего сравнения с Биткойном здесь актуальны две характеристики:
В Биткойне ситуации совершенно иная. Здесь нет затрат на точки продаж и банкоматы, нет административных расходов, ограничений ликвидности и практически отсутствует риск контрагента. Так за что же вы платите? Не слишком вдаваясь в технические подробности, Биткойн обрабатывает транзакции путем распространения их по сети через ноды, включения их в блоки майнерами, а также распространения, проверки и сохранения полученных блоков на каждой полной ноде.
Все расходы здесь связаны с хранением данных и проверкой криптографических подписей. Чем больше данных вы хотите поручить ответственности других участников сети, тем больше вам придется заплатить за такую привилегию. Это можно сравнить с потребностью в более дорогом тарифном плане, если вы хотите сутками стримить фильмы в HD-качестве на своем мобильном, а не просто периодически проверять электронную почту. Еще одна аналогия — оплата в зависимости от веса при отправке посылки: вы платите больше за более быструю доставку, за больший вес и, часто, за доставку в пиковые периоды (например, в Рождество).
Иными словами, Биткойн допускает ценовую дискриминацию и приоритетную обработку, что, с экономической точки зрения, может обеспечить также более эластичную кривую спроса: тот, кому важно, чтобы его транзакция была обработана быстрее, платит более высокую комиссию, тем самым отчасти субсидируя обработку транзакций для всех остальных.
Наконец, последняя характеристика, о которой следует помнить в отношении биткойн-транзакций: один из способов, которым протокол помогает ограничить стоимость обработки данных для всех участников сети (а также ограничить эффект безбилетника), состоит в ограничении пространства блока, то есть максимально допустимого количества данных, которые можно записать в каждый блок (от ~1 Мб до 4 Мб в зависимости типа транзакций, однако это уже выходит за рамки статьи). Это означает, что по мере увеличения спроса на обработку транзакций объем относительного доступного пространства блока сокращается.
Если что-то смещает кривую спроса вправо (например, когда MicroStrategy или Square покупают больше BTC), точка пересечения смещается вправо, ближе к полным блокам и с более высокими комиссиями.
Больше данных — больше проблем
Последствия такого типа рынка комиссий создают довольно интересную динамику. Помимо возможности платить за приоритет, самое важное отличие заключается в том, что комиссия рассчитывается не из суммы транзакции (привычный большинству людей вариант), а исходя из того, сколько данных вы передаете. Это означает, что обработка транзакции на $100 может стоить дороже, чем обработка транзакции на $1 млн. В качестве конкретного примера рассмотрим эту биткойн-транзакцию, отправленную в апреле 2020 года, в которой BTC на сумму $1,1 млрд были отправлены в одной транзакции с комиссией ₿0,0001 или около $0,68 на тот момент.
Чтобы понять, как можно минимизировать стоимость транзакции, нужно понять, какие данные при этом отправляются и в какой мере мы можем это контролировать.
В некотором приближении биткойн-транзакцию можно рассматривать как состоящую из трех частей:
- «метаданные» — обязательные поля с информацией о транзакции;
- входы — за счет каких средств финансируется транзакция;
- подписи или witness — то, как вы подтверждаете право собственности на BTC, которые хотите отправить;
- метаданные входа — информация о расходуемых BTC;
- выходы — количества и адресаты для отправляемых BTC.
Из этого уже можно понять, за счет чего может увеличиваться размер транзакции. Однако в самом простом случае транзакция с одной подписью (наиболее распространенная в Биткойне на сегодняшний день), с одним входом и одним выходом будет иметь <200 байт данных (а верхний предел пространства блока составляет 1 Мб, или 1 миллион байт). При размере комиссии 10 сатоши за байт, общая уплаченная комиссия составит 3000 сатоши.
Простая транзакция => метаданные + 1 вход + 1 выход = 178 байт * 10 сат./байт = 1780 сат.
Неплохо. Комиссия $0,89 при цене биткойна в $50 тыс. и сравнительно высокой ставке 10 сат./байт.
Выходы
Каждый дополнительный выход добавляет к сумме ~34 байта. Большинство транзакций имеют два выхода: исходящий (к адресату) и обратный для возврата остатка BTC (сдачи) в кошелек отправителя, так что это, пожалуй, и будет наилучшей точкой отсчета.
Два выхода => метаданные + 1 вход + 2 выхода = 212 байт * 10 сат./байт = 2120 сат.
Разница ~16%. Для настолько простых случаев транзакция с одним выходом — работоспособный вариант снижения относительных затрат, но по мере усложнения транзакций получаемая разница составляет уже меньший процент. Входы — вот где все становится немного сложнее и где, по-видимому, скрываются наибольшие возможности для экономии.
Входы
Сумма ваших входов должна равняться той сумме, которую вы собираетесь отправить. Входы состоят из единиц ранее полученных биткойнов. Они также известны как непотраченные выходы транзакций, или UTXO (от Unspent Transaction Output).
Допустим, что у меня есть адрес, на который я отправляю ₿0,1 каждый месяц.
На конец года баланс этого адреса составляет ₿1,2, состоящий из 12 UTXO по ₿0,1 каждый.
Теперь предположим, что я хочу отправить с него ₿1. К сожалению, в моем кошельке нет ни одного UTXO, достаточно большого, чтобы покрыть эту сумму. Вместо этого, мне придется использовать 11 из моих 12 входов — 10 для покрытия суммы в ₿1 плюс еще один для уплаты комиссии.
Данные для входов занимают ненамного больше места, чем данные для выходов — ~41 байт, — но для проверки входов нужны также подписи, и они «весят» по ~73 байта каждая. Так что для каждого входа мы добавляем по ~114 байт.
11 входов => метаданные + 11 входов + 2 выхода = 30 + 11*114 + 2*34 = 1352 байта * 10 сат./байт = 13 520 сат.
В качестве примера того, как далеко это может зайти, взгляните на самую объемную транзакцию, когда-либо отправленную в блокчейне Биткойна: 5568 входов по ₿0,00001 каждый и 1 выход, получающий ₿0,05569 = 1 Мб данных. То есть одна транзакция заняла весь блок целиком.
Мультиподпись (Multisig)
Multisig-адреса, или адреса с мультиподписью, — еще один шаг вперед по этой шкале. Это довольно большая тема, но что имеет отношение к сегодняшнему разговору, так это то, что multisig-входы требуют гораздо большего количества данных (для всех возможных намерений и целей, хотя выход к multisig-адресу совершенно неотличим от обычных адресов).
Обычный вход с одной подписью требует только подписи и некоторых метаданных, которые сообщают ноде, где найти и проверить UTXO, расходуемый в этой транзакции:
Обычный вход
Для multisig-входа требуются:
- список всех открытых ключей, которые могут подписывать эту транзакцию (для транзакции типа два-из-трех это означает 3 открытых ключа);
- подпись для каждого подписывающего ключа (в транзакции типа два-из-трех это две подписи);
- обычные метаданные входа для ссылки на UTXO в блокчейне;
- дополнительные метаданные, описывающие «скрипт».
Multisig-вход
Таким образом, для нашего примера с 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,1 на общую сумму ₿0,6. Теперь комиссии низкие, и мы хотим объединить шесть наших непотраченных выходов (UTXO) через транзакцию самому себе, в которой будет создан один новый UTXO.
Метаданные + 6 multisig-входов + 1 выход = 30 + (6 * 293) + (34 * 1) = 1822 байт * 5 сат./байт = 9110 сат.
Для простоты и наглядности будем держать цену BTC на уровне $50 тыс., и тогда за эту первую консолидацию UTXO мы заплатим $4,50.
К 12 месяцу у нас появилось шесть новых UTXO по ₿0,1 плюс старый ₿0,5999089 (₿0,6 – 9110 сат. уплаченной комиссии). Тем временем мы подписались на оповещения от txfees.watch и получили на имейл уведомление о низких комиссиях сети. Воспользуемся этой возможностью для очередной консолидации.
База + 7 multisig-входов + 1 выход = 30 + (7 * 293) + (34 * 1) = 2115 байт * 5 сат./байт = 10 575 сат. или ~$5,30
Обратите внимание, что, несмотря на то, что один из UTXO по стоимости значительно превышает другие, это не влияет на то, сколько стоит его обработка. Обработка одного UTXO на ₿0,599 стоит столько же, сколько обработка UTXO на ₿0,1 (или даже ₿0,0001).
Итак, теперь мы заплатили за консолидацию UTXO в общей сложности $9,80, объединив баланс ₿1,1998 всего в один UTXO.
Приближается период уплаты налогов, и вы хотели бы внести взнос в биткойнах в свой частный пенсионный фонд (конечно, если эти покупки были сделаны от имени юр. лица вашего пенсионного фонда). Однако комиссии сумасшедшие — 80 сат./байт даже в выходные. Вы не можете ждать снижения комиссий, потому что дедлайн уплаты налогов быстро приближается. К счастью, вы заранее консолидировали свои UTXO! Давайте посмотрим, во сколько обойдется депонировать ваш ₿1 на счет пенсионного фонда (два выхода: один на адресата и один для остатка).
База + 1 multisig-вход + 2 выхода = 30 + (1 * 293) + (34 * 2) = 391 * 80 сат./байт = 31 280 сат. или $15,64
Общая сумма, которую мы потратили на комиссии за отправку ₿1 сократилась со $134 в примере с одной транзакцией с 11 входами до $25,44 за три транзакции при консолидационном подходе — экономия 80%!
В заключение
Цель этого поста состояла в том, чтобы внести чуть больше ясности в рынок комиссий за биткойн-транзакции. Технические детали я подчас опускал, чтобы сделать статью как можно более удобоваримой, так что заранее прошу меня извинить за любые возможные технические оплошности и связанное с этим искажение цифр. Однако изложенные принципы должны оставаться в силе несмотря на любые подобные искажения. Надеюсь, что эта информация еще пригодится вам при взаимодействии с Биткойном.
Однако это ни в коем случае не единственные возможные способы экономии на комиссиях. Другие более технические стратегии, некоторые из которых требуют предварительной поддержки со стороны вашего кошелька, выходят за рамки этой статьи. Но для полноты картины и в качестве дополнительной информации для любознательных я перечислю несколько технологий, заслуживающих почетного упоминания в этом контексте:
- – Активация Segregated Witness в сети Bitcoin: чего следует ожидать;
- – Отделенный Свидетель: как удачный хак может существенно увеличить потенциал Биткойна;
- – Как SegWit улучшает безопасность.
Источник: bitnovosti.com