Это четвертая статья в серии, посвященной проблеме ограничения размера блоков. Предполагается, что читателю известны базовые принципы работы биткойн-сети и блокчейн-технологий.
Моделирование пропускной способности биткойн-сети
Во второй части нашего анализа мы выяснили, что в своей нынешней форме биткойн-сеть может стабильно обрабатывать примерно 3 транзакции в секунду (TPS). На текущий момент в 2015 году нагрузка на сеть составляет в среднем 1,2 TPS, однако из-за увеличения количества транзакций этот показатель постепенно растет. В этой части мы рассмотрим, к чему это может привести на практике, и попытаемся оценить, когда при условии сохранения текущих темпов роста в сети начнут наблюдаться заметные задержки подтверждения транзакций.
Чтобы собрать сведения о том, как будет работать сеть при большом количестве транзакций, 29-30 мая было проведено нагрузочное тестирование, результаты которого показаны на приведенной ниже диаграмме. Как видите, при пиковой нагрузке в пуле (список транзакций, ожидающих добавления в блок, в памяти компьютера) находилось около 26 тысяч транзакций. Даже в идеальных условиях, а именно при полном заполнении всех блоков, для обработки всех этих транзакций потребовалось бы 14 блоков (или 2,5 часа).
Моделирование методом Монте-Карло
Для практического анализа заполнения блоков при различной нагрузке мы провели моделирование методом Монте-Карло, использовав исторические сведения о размере транзакций. Для каждого уровня TPS мы смоделировали 1 миллион блоков и оценили, хватило ли ресурсов сети для обработки всех поступивших транзакций. Технические подробности модели см. в конце статьи.
Наблюдения:
1. При текущем уровне около 1,2 TPS накладные расходы, связанные с ожиданием подтверждения транзакций (правая ось), составляют 0,07 блока (т. е. примерно 7% транзакций не попадают в ближайший блок). Если помните, в первой части мы отметили, что в настоящее время объем примерно 20% блоков превышает 725 КБ, что вполне согласуется с тем фактом, что на приведенной выше диаграмме полностью заполняются 16% блоков.
2. Значительные задержки подтверждения транзакций начинают наблюдаться при уровне примерно в 2,3 TPS, при котором среднее время обработки транзакций начинает превосходить 1 блок.
3. При 3,0 TPS (что примерно соответствует теоретическому пределу текущего протокола) среднее время ожидания достигло бы 20 блоков.
4. В реальности существенные задержки, скорее всего, начнутся гораздо раньше достижения теоретического предела в 3 TPS.
Увеличенный размер блоков
Наконец, ради полноты анализа мы провели моделирование Монте-Карло с блоками размером 8 МБ, результаты которого показаны ниже. Задержка обработки транзакций становится заметной (превышает 1 блок) только после 18 TPS, а средняя задержка в 5 блоков достигается при 22 TPS.
Сколько у нас времени?
Результаты моделирования и прогноз в отношении роста количества транзакций позволяют оценить, когда в сети начнут наблюдаться заметные проблемы с масштабируемостью. Во второй части мы оценили совокупный среднегодовой темп роста количества транзакций с 2013 года. Ниже мы воспроизводим ту диаграмму со средним значением TPS по оси ординат (а не количеством транзакций в сутки).
В общем, при сохранении текущих темпов роста эффекты, связанные с исчерпанием ресурсов сети, скорее всего, проявятся раньше достижения теоретического предела в декабре 2016 года: так, к июлю 2016 года обработка типичной транзакции станет дольше на 1 блок. Более того, в анализе предполагается, что размер блоков ограничен 1 МБ, тогда как в стандартных биткойн-клиентах предел составляет примерно 732 КБ (см. первую часть). Это означает, что задержки могут стать заметны еще раньше.
Просмотреть данные блокчейна в реальном времени можно с помощью инструментов TradeBlock.
Вероятностные характеристики модели:
Время между блоками соответствовало экспоненциальному распределению со средним значением 10 минут.
Транзакции генерировались согласно распределению Пуассона со средним значением, зависящим от TPS.
Размер транзакций соответствовал нормальному распределению с характеристиками, имевшими место в последние 30 дней: среднее значение = 543 байта; стандартное отклонение = 1759 байтов.
http://bitnovosti.com/2015/06/20/bitcoin-network-capacity-analysis-part-4-simulating-practical-capacity/