В продолжение моего предыдущего поста на тему исторических значений комиссий за транзакции Биткойна… История прикольная штука, но можно с уверенностью сказать, что то, что происходит сейчас, гораздо интереснее и полезнее. Но то, что происходит сейчас… не так-то просто объяснить.

Во-первых, как было установлено в предыдущем посте, комиссии за большую часть транзакций по-прежнему составляют 0,1 mBTC (или 0,1 mBTC за килобайт, если округлять вверх до килобайта).
Комиссии за биткойн-платежи: анализ спроса и предложения
Опять же, как было установлено в предыдущем посте, это достаточно наивный подход: майнеры будут заполнять блоки транзакциями наименьшего размера, которые выплачивают максимальные комиссии, так что если вы платите 0,1 mBTC за маленькую транзакцию, она может пройти быстро, но если вы платите 0,1 mBTC за большую транзакцию, её появления в блокчейне можно вообще не дождаться.

Все в точности так, как если бы вы платили при заправке полного бака $30 вне зависимости от его объема, а не за литр. Если вы заправляете скутер, то вероятно переплатите. Если же у вас минивэн, то с вами просто никто не захочет связываться. Оплачивайте за литр, и ваш бак будет наполнен, независимо от того, на чем вы ездите.

Но вернемся в мир Биткойна. Все то время, пока майнеры используют побайтный подход – насколько я могу судить, примерно с июля 2012 – у пользователей на самом деле даже не было способа таким образом рассчитывать платежи за транзакции до начала 2015, пока не вышел Bitcoin Core 0.10.0. Более того, в этой версии стандартные платежи не просто изменились с оплаты за транзакцию на оплату по-байтно, но также появилась возможность динамической подстройки цены “за байт” на основе текущего статуса сети. Клиент теперь определяет, какая плата будет необходима для получения подтверждения в течение нескольких блоков (в пределах часа), или в течение десяти-двадцати блоков (от двух до четырех часов).

На некоторых сайтах, например таких, как bitcoinfees.21.co или bitcoinfees.guthub.io, можно увидеть расчеты комиссионных без необходимости самостоятельно запускать Bitcoin Core. На последнем из перечисленных представлен отличный график недавних ставок комиссий:
Комиссии за биткойн-платежи: анализ спроса и предложения

Из графиков видно, что ожидаемые ставки меняются с течением времени – и наибольшая цена за максимально быстрое подтверждение транзакции, и то, насколько плата может быть меньше, если вы готовы подождать.

Конечно, это показывает, сколько вам “следовало бы” заплатить, а не то, сколько люди платят на самом деле. Но поскольку блокчейн является открытым журналом транзакций, по крайней мере, можно поднять историю. Конечно, Rusty уже сделал это, но я думаю, есть еще кое-что, что можно исследовать. Мой анализ отличается от анализа Расти тремя вещами:

a) Вместо средних я использую квантили

b) Я отбрасываю транзакции, плата за которые составляет неизменные 0,1 mВТС

c) Я анализирую порознь несколько разных размеров транзакций

Но перейдем к подробностям:
Рассмотрение средних значений меня совершенно не вдохновляет, поскольку они могут быть сильно искажены несколькими большими значениями. Вместо этого, я думаю, имеет смысл рассмотреть медианные значения. Хотя, возможно, будет даже лучше взять несколько перцентилей. В частности, я решил работать с “сикстилями”, то есть с пятью точками разбиения, если побить все транзакции за день на шесть частей, что дало мне медиану (50%), терцили (33% и 66%), и две дополнительные точки, которые показывали мне чуть более экстремумные значения (16,7% и 83,3%).

Транзакции, платежи за которые совершенно не отражали рыночные условия, было не интересно анализировать – если достаточно 0,1 mBTC, чтобы заполнить блок 200-байтными транзакциями, тогда майнер, стремящийся максимизировать свой доход, не будет включать в блок 400-байтные транзакции с оплатой 0,1 mBTC, потому что на то же самое место в блоке он сможет разместить два 200-байтных транзакции, за которые в сумме получит 0,2 mBTC. То же самое применимо к любым транзакциям с размером больше 200 байт. И ничего больше. Кроме того, поскольку есть множество транзакций, за которые всегда платится 0,1 mBTC, из-за них очень тяжело отследить, как же ведут себя остальные транзакции – но, как минимум, их легко отбросить.

Поскольку версия Core 0.10 привнесла два изменения за раз (а именно – изменение с жестко прошитого стандартного размера оплаты на размер оплаты, изменяемый в зависимости от рыночных условий, и размер оплаты, рассчитываемый не за транзакцию, а за пересылаемый объем в байтах), может быть затруднительно понять, какой из этих двух эффектов возымел место. Изучив влияние на транзакции определенного размера, мы, тем не менее, можем разделить эти воздействия: результатом использовании оплаты “за транзакцию” будет то, что транзакции разного размера будут оплачивать по разным ставкам “за байт”, в то время, как результатом использования оплаты за байт будет то, что транзакции разного размера гармонизуются в районе определенной цены.

Аналогично, результатом использования оценки необходимого размера оплаты будет то, что оплата за транзакцию определенного размера будет отличаться по времени. Тогда как средний размер оплаты может отличаться по времени просто из-за использования оплаты “за транзакцию”, при том, что средний размер транзакций варьируется. Я выбрал четыре размера:
220-230 байт, что является размером транзакции, тратящей еденичный, стандартный вход типа “оплата-на-хэш-открытого-ключа” (pay-to-public-key-hash, дальше P2PKH) со сжатым открытым ключем – на два P2PKH выхода;
370-380 байт, что соответствует транзакции, тратящей два P2PHK входа на два P2PHK выхода;
520-520 байт, что соответствует транзакции, с тратой трех P2PKH входов на два P2PKH выхода;
и 870-1130 байт, куда попадают транзакции размером около килобайта.
Набор графиков ниже демонстрирует подход, когда транзакции каждого из заданных размеров, представлены на отдельном графике. На каждом графике соответственно, транзакции побиты на шесть частей, с выборкой сикстилей, раздельно для каждой шестой части – затем, каждая сикстиль сглажена на двухнедельном периоде, чтобы было немного удобнее смотреть.

Комиссии за биткойн-платежи: анализ спроса и предложения
Из этого можно вывести некоторые наблюдения:

Видно, что до июня 2015 платежи были стабильно на уровне 0,1 mBTC за килобайт или его часть – так что транзакции в 220 байт оплачивались по ставке 0,45 mBTC за килобайт, 370-байтные по ставке 0,27 mBTC за килобайт, 520-байтные по 0,19 mBTC за килобайт, 1-килобайтные по 0,1 mBTC, а те, что слегка больше 1 килобайта – по 0,2 mBTC за килобайт (50% медианная линия между 0,1 mBTC/Кб и 0,2 mBTC/Кб, похожа на артефакт при сглаживании). Размеры этих платежей не принимают в расчет размер транзакции, и не меняются в зависимости от условий рынка – так что они не отражают изменений спроса, насколько полны были блоки, цену биткойна в USD, хэширующую мощность, которая поддерживала блокчейн или любый другие факторы, которые могли бы иметь отношение к этому.

Четко видна резкая реакция на изменение рыночных условий в конце июня 2015 – и не случайно. Это отражает происходивший тогда “стресс-тест” или “флуд-атаку“.

Так же, вполне очевидно, что в данном случае реакция рынка не была сколько-то рациональна или последовательна – например, 220-байтные транзакции подскочили в цене до свыше 0,8 mBTC/КБ, в то время как 1000-байтные транзакции выросли в цене до чуть больше, чем 0,4 mBTC/КБ – это почти столько, сколько стоили 220-байтные транзакции до стресс-атаки. Более того, даже при том, что некоторые транзакции платили значительно большие комиссионные, транзакции, за которые платили стандартные комиссионные в значительной степени по-прежнему проходили по большей части беспрепятственно, что ставит под вопрос влияла ли вообще оплата более высоких комиссионных хоть на что-нибудь.

Однако же, если более внимательно присмотреться к транзакциям размером в 1000 байт, можно увидеть, что в начале июля был короткий период (возможно, слишком краткий период, размытый в результате усреднения), когда все сикстили были выше уровня 0,1 mBTC/КБ – что указывает на тот факт, что были некоторые транзакции со стандартной оплатой, проведение которых было затруднено. Это говорит о том, что в течение этого периода, с высокой долей вероятности, любой кошелек, который (a) не был запрограммирован на динамический расчет комиссионных, и (б) использовался для создания транзакции размером около 1КБ, произвел бы транзакцию, которая фактически не была бы включена в блокчейн. И хотя это не соответствует определению, выложенному в сеть Джефом Гарзиком (Jeff Garzik), я думаю, будет справедливо называть это “моментом оплаты“, причина которого заключалась в том, что форсирование увеличения ставок комиссионных, вероятно, было вызвано отказом программного обеспечения Биткойна работать так, как было задумано.

С другой стороны, интересно отметить, что подобное событие с тех пор больше ни разу не повторялись, даже в ходе более поздних стресс-атак, или покупательского ажиотажа в ходе Чернуой Пятницы или перед Рождеством.
Как мы и намеревались ранее, теперь давайте перестроим эти графики с отброшенными стандартными означениями оплаты за транзакции (то есть, в точности 0,1 mBTC, 0,01 mBTC, 0,2 mBTC, 0,5 mBTC, 1 mBTC или 10 mBTC).

Отбросили:
Комиссии за биткойн-платежи: анализ спроса и предложения

Как и раньше, эти графики позволяют сделать некоторые наблюдения:

Во-первых, они очень беспорядочны. То есть, даже среди транзакций, за которые платятся переменные комиссии, отсутствует очевидный консенсус на тему того, какова же должна быть справедливая цена, и некоторые пользователи платят существенно больше, чем остальные.

В начале февраля, что соответствует времени выпуска Bitcoin Core 0.10.0, случилось резкое снижение самых малых комиссий – что можно было предвидеть, как если бы небольшое  количество пользователей начало рассчитывать оплату, вместо того, чтобы использовать стандартные значения, и вдруг обнаружили, что даже если они платят совсем мало, это все равно дает вполне разумные сроки подтверждения транзакций. То есть, кошельки, в которые встроен динамический расчёт комиссионных, позволяют платить за транзакцию существенно меньше.
Однако, эти платежи не оставались на низком уровне, но с течением времени росли – примерно линейно.

Линия тренда (голубые точки) дает приблизительный ориентир. Она растет с 0 mBTC/КБ на момент 1.03.2015 до 0,27 mBTC/КБ на 1.03.2016. То есть, если брать округленно, платежи, управляемые рынком,  выросли до того же самого значения за байт, что и транзакции с двумя входами и двумя выходами с фиксированной оплатой в 0,1 mBTC.
Здесь было бы неплохо убедиться, что мы не рассматриваем недостаточно большое количество транзакций, когда откинули транзакции со стандартными платежами 0,1 mBTC. Если построить графики с количеством транзакций по типам (то есть – общее количество транзакций, 220-байтные транзакции (1 вход, 1 выход), 370-байтные транзакции (2 входа, 2 выхода), 520-байтные транзакции (3 входа, 2 выхода), и 1-килобайтные транзакции, то можно увидеть, что их количество увеличивалось в течение прошедшего года, и что количество мелких транзакций значительно превышает количество больших. Обратите внимание на то, что ось ординат на левом верхнем графике представлена в линейном виде, в то время, как на остальных графиках она логарифмическая – так что каждое деление по вертикали показывает десятикратное увеличение количества транзакций в день. Не накладывалось никакого сглаживания / усреднения:
Комиссии за биткойн-платежи: анализ спроса и предложения

Отсюда видно, что по большому счету, количество транзакций каждого типа увеличивается, и что доля транзакций, платежи за которые были иными, чем стандартные, так же увеличивается. Однако, так же стоит отметить, что доля транзакций с тремя вводами с использованием нестандартных платежей фактически снизилась в ноябре – что, вероятно, указывает на то, что многие пользователи (или разработчики и сервисы кошельков, используемых многими пользователями) попросту временно увеличили стандартную оплату, пока их беспокоил стресс-тест, и вернулись к прежним стандартным значениям, когда беспокойство утихло, вместо того, чтобы перейти на использование кошельков или алгоритмы, которые рассчитывают оплату динамически. Но в любом случае, к ноября 2015 года мы имеем по крайней мере около тысячи транзакций в день каждого из размеров, даже после того, как исключили стандартные сборы.

Если сосредоточиться на сикстилях, примерно сходящихся к линии тренда, которую мы использовали ранее, то можно сделать одно очень интересное наблюдение: c ноября 2015 наличествует значительное согласование по уровням платежей в различных размерах транзакции, и эта гармонизация достаточно устойчива, даже при том, что уровень оплаты динамически изменяется с течением времени:
Комиссии за биткойн-платежи: анализ спроса и предложения
Что видно на этот раз?

С ноября 2015 большое количество транзакций разных размеров стали рассчитывать платежи за количество байт, и с тех пор отслеживают общий уровень оплаты-за-байт, который с тех пор увеличивался и уменьшался. Это говорит о том, что значительное количество транзакций используют расчет рыночных платежей!
Текущая рыночная цена несколько ниже, чем 0,1 mBTC за транзакцию с двумя входами и двумя выходами (то есть, 0,27 mBTC/КБ).
Наблюдаемые ранее рыночные ставки примерно соответствуют 12-минутным или 20-минутным комиссионным сборам, показанным на графике bitcoinfees в начале статьи. То есть, оплата более высоких комиссий, чем наблюдаемые рыночные ставки, вряд ли приведет к ускорению подтверждения транзакции.
Есть множество транзакций, за которые переплачивают (например, транзакции с 1 входом и 2 выходами, за которые платят фиксированную цену 0,1 mBTC).
Есть так же множество транзакций, за которые недоплачивают (например, транзакции с тремя входами и 2 выходами, с оплатой в 0,1 mBTC), где можно ожидать задержек с подтверждением.
Вдобавок к линии тренда я добавил четыре серых горизонтальных линии. По одной на каждую из стандартных ставок по каждому из рассматриваемых размеров транзакции (0,1 mBTC/КБ за 1000-байтные транзакции, 0,19 mBTC/КБ за 520-байтные транзакции, 0,27 mBTC/КБ за 370-байтные транзакции и 0,45 mBTC/КБ за 220-байтные транзакции).

Наблюдается интересное явление: когда рыночная цена уходит выше любой серой пунктирной линии, транзакции соответствующего размера, которые платят стандартную комиссию 0,1 mBTC становятся менее прибыльными для включения в блоки майнерами, чем транзакции, которые платят рыночную цену. В определенном смысле это вызывает “момент оплаты”, упомянутый ранее. То есть, при рыночном уровне платежей выше 0,1 mBTC/КБ, транзакции размером около 1000 байт, за которые платят 0,1 mBTC, в общем случае будут испытывать задержки. Судя по графику, для рассматриваемых на нем транзакций такое событие уже наступало дважды – событие оплаты в июле 2015, когда 1000-байтные транзакции, за которые платили стандартную сумму комиссии начали регулярно испытывать задержки вследствие того, что рыночная стоимость стала превышать 0,1 mBTC/КБ (то есть, оплату 0,1 mBTC деленную на 1KB размера транзакции), и следом случился второй момент оплаты в ноябре, который затронул транзакции с 3 входами и 2 выходами, вследствие того, что рыночная цена превысила 0,19 mBTC/КБ (то есть, 0,1 mBTC деленное на 0,52КБ). В соответствии с графиком, несколько линий тренда колеблются вокруг 0,27 mBTC/КБ, знаменуя скорое наступление третьего “момента оплаты”, когда 370-байтные транзакции (то есть, с 2 входами и 2 выходами) со стандартными платежами за транзакцию начнут испытывать задержки подтверждения.

Однако же, серые пунктирные линии так же можно рассматривать как линии “сопротивления”  – когда рыночная цена ушла выше 0,27 mBTC/КБ, большее количество транзакций пытались платить рыночную цену, чем то количество транзакций с 2 входами и 2 выходами, за которые платили 0,1 mBTC. И таких было очень много – десятки тысяч – что означает, что рыночные цены смогут увеличиваться только при условии бОльшего распространения программ, которые используют динамическую схему расчета комиссионных.

Мне не понятно, почему платежи так хорошо сошлись в ноябре. Наилучшим предположением будет посчитать это результатом частично возросшего принятия, усиленным моим выбором рассмотренных квантилей, наряду с усреднением результатов по двум неделям. В любом случае, наиболее интересные изменения, кажется, происходили в районе августа:

В июле 2015 был выпущен Bitcoin Core 0.11.0 с незначительными изменениями в алгоритме расчета комиссионных.
В августе выпустился Electrum 2.4.1 с поддержкой динамических платежей.
Copay (от BitPay) добавили динамический расчет комиссий в версии 1.1.3, вышедшей в августе.
Mycelium добавил побайтные комиссии в версии 2.5.8, вышедшей в декабре.
Конечно же, очевидно, что до сих пор многие кошельки не платят комиссии побайтно или динамически. Насколько я знаю:

Blockchain.info выставляет комиссию в стандартное значение 0,1 BTC – кажется, его API требует минимальный платеж за транзакцию в размере 0,1 mBTC.
Coinbase платит 0,3 mBTC за транзакцию (насколько я знаю, они имеют обыкновение использовать транзакции с 3 входами и 3 выходами, что предположительно означает около 600 байт на транзакцию по цене около 0,5 mBTC/КБ).
Airbitz, кажется, решили взимать плату в зависимости от суммы сделки, а не от размера транзакции в байтах.
В myTrezor, кажется, установки по умолчанию составляют 0,1 mBTC, но можно при желании увеличить их до 0,5 mBTC.
bitcoinj не рассчитвает побайтные (или динамические) комиссионные, хотя приложения на основе bitcoinj могут их рассчитывать.

Резюме
Многие кошельки не рассчитывают оплату за транзакции динамически, или даже не рассчитывают её побайтно.
Значительное количество кошельков рассчитывают оплату динамически с уровнем гранулярности до байта.
Кошельки, которые рассчитывают оплату динамически, платят существенно меньше, чем те, которые этого не делают.
Оплата большей комиссии, чем рассчитанная динамически относительно рынка, в общем случае не позволяет ускорить подтверждение вашей транзакции.
Рыночная стоимость проведения транзакций выросла примерно до того уровня, который использовался кошельками для транзакций с 2 входами и 2 выходами в начале 2015.
Рыночные платежи за транзакции смогут развиваться и дальше только при условии, что будут распространяться кошельки с поддержкой рыночных платежей.
В истории было два “момента оплаты” для кошельков, которые не использовали рыночный расчет комиссионных и платили стандартные 0,1 mBTC за транзакцию. Для таких кошельков, начиная с июля 2015, рыночная стоимость за транзакции была достаточно высока, чтобы вызвать задержки подтверждения для 1000-байтных транзакций. И, примерно с ноября 2015, рыночные цены за транзакции стали достаточно высоки, чтобы вызывать задержки подтверждения для 520-байтных транзакций (3 входа, 2 выхода). Третий “момент оплаты” очень близок, и он затронет транзакции размером около 370 байт (то есть, 2 входа, 2 выхода).

http://bitnovosti.com/2016/03/24/bitcoin-fees-vs-supply-and-demand/