На днях Биткоин порадовал круглыми цифрами: была найдена 15-ти милионная монета (из 21-го миллиона всего) и зарегистрирована 100 миллионная транзакция (за 6 лет). Прежде всего хочу огорошить тех, кто слепо верит в скорейшую “крипто-революцию”: 100 миллионов транзакций, например, VISA проводит за, на минуточку, 13 часов, а самой системой Биткоин скоро будет невозможно пользоваться из-за возросшего времени ожидания подтверждения и/или взрывного роста комиссионных.
Проблема все та же — 1 Мб ограничение размера блока. Рекорд в 100 тыс. транзакций в день был пройден год назад, тогда это гипотетически составляло 15% мощности сети. На сегодняшний день эта цифра уже порядка 40% и усугубляется тем, что в реальной жизни количество транзакций в блоке одного и того же размера может отличаться в десятки раз (в примере ±900 Кб):
Кроме того, интересный момент, комиссионные начинают заметно коррелировать с размером блока, чего ранее не наблюдалось. Для сравнения графики кросс-корреляции за последние полгода 2014-го и соответственно 2015-го годов:
Однако, 0.3 против 0.7! Средние комиссионные в день за второе полугодие 2014-го составляли 12 BTC, а 2015-го уже 28 BTC. Корреляция также заметна на глаз на данном графике (недельное усредненное за второе полугодие 2015-го, верхний — размер комиссионных, нижний — размер блока):
О чем это все?
О том, что корреляции между размером блока и комиссионными за транзакцию быть не должно, а она есть. К примеру, в конце 2014-го вы переводили любые суммы в биткоинах не особо задумываясь о том, какие комиссионные предложить, а через год, в конце 2015-го, чтобы уложиться в обычные 10 минут, нужно предложить уже в три раза больше.
Мы здесь говорили в основном обо всяких усредненных числах, действительно, средний размер блока в данный момент составляет около 500 Кб, но вот нестандартный пример:
Здесь 8 подряд идущих блоков (за исключением #389623) имеют практически максимальный размер. Если бы вам непременно захотелось бы попасть в один из них, скорее всего там оказалось бы тесно для вашей транзакции и пришлось бы расщедриться на бОльшие комиссионные майнерам на радость.
Решение: срочно увеличивать размер блока
Разработчики очень хорошо осведомлены об этой проблеме, но ничего не могут предпринять: различные фракции тянут каждая одеяло на себя и не могут договориться о едином стандарте. В результате система пытается отрегулировать сама себя при помощи повышения комиссионных и введения приоретизации за плату. Если еще потянуть какое-то время, даже такое решение перестанет работать и тогда начнутся уже реальные проблемы и система встанет.
Для расчетов, приведенных в статье использовался R-скрипт:
require(gridExtra) require(Quandl) require(zoo) sizes15 <- Quandl("BCHAIN/AVBLS", start_date="2015-06-27", end_date="2015-12-27", type="zoo") fees15 <- Quandl("BCHAIN/TRFEE", start_date="2015-06-27", end_date="2015-12-27", type="zoo") sizes14 <- Quandl("BCHAIN/AVBLS", start_date="2014-06-27", end_date="2014-12-27", type="zoo") fees14 <- Quandl("BCHAIN/TRFEE", start_date="2014-06-27", end_date="2014-12-27", type="zoo") ccf(fees15, sizes15) ccf(fees14, sizes14) p1 <- autoplot(apply.weekly(fees15, mean)) p2 <- autoplot(apply.weekly(sizes15, mean)) grid.arrange(p1, p2)