Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Анализ биткойн-сети, часть 5: анализ нагрузочного тестированияПредлагаем вашему вниманию пятую статью из серии об увеличении размера блоков и его значении для дальнейшего роста биткойн-сети. Предыдущие части доступны по следующим ссылкам: 

1. Блоки, 2. Транзакции, 3. Майнинг, 4. Моделирование будущей нагрузки.

Анализ результатов нагрузочного тестирования

29 и 30 мая отдельные участники биткойн-сообщества совместными усилиями протестировали пропускную способность сети, отправив в нее за короткое время десятки тысяч транзакций. Нагрузочное тестирование начало сказываться на работе пула транзакций в памяти узлов поздним вечером (по времени UTC) 29 мая и продолжалось до раннего утра 30 мая (см. диаграмму ниже). Ради целей данного анализа мы определяем интервал тестирования как период между блоками 358 596 (23:39 по UTC) и 358 625 (6:54 по UTC). С помощью инструментов TradeBlock мы проанализировали данные этого тестирования и получили несколько интересных результатов.

Чтобы смоделировать высокую нагрузку на сеть, участники тестирования программно сгенерировали тысячи транзакций с небольшой комиссией. При максимальной нагрузке в пуле транзакций находилось 26 тысяч транзакций (в обычном режиме их количество составляет от 1 до 4 тысяч).

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Определение приоритета транзакций

Столкнувшись с необходимостью обработать 135 тысяч транзакций за сутки, майнеры были вынуждены выбирать, какие транзакции им включать в каждый очередной блок. Чтобы сравнить обработку транзакций в обычном режиме и при нагрузочном тестировании, мы проанализировали распределение транзакций относительно “контрольного периода”, включающего двое суток перед тестированием (23 и 27 мая) и двое суток после (3 и 6 июня) — по одному рабочему и одному выходному дню.

Средняя комиссия за байт данных в транзакциях за 7 с половиной часов нагрузочного тестирования составила около 32 сатоши, однако большая доля транзакций (26%) включала наименьшую комиссию (0-5 сатоши за байт данных). Средняя величина транзакции во время тестирования составила 5,8 XBT с медианой 0,1 XBT. Эти же значения в контрольный период были равны 10,9 XBT и 0,4 XBT соответственно. Иначе говоря, количество транзакций и объем данных во время тестирования значительно увеличились, но характеристики транзакций при этом также отклонились от стандартных.

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Далее мы проанализировали, как долго пришлось ждать добавления транзакции в блок при тестировании, и сравнили это “время ожидания” (в блоках) с контрольным периодом. Как показано ниже, подтверждение транзакцией с низкой комиссией (от 0 до 5 сатоши за байт данных) во время тестирования занимало в среднем около 28 блоков, или почти 5 часов, тогда как в контрольный период аналогичные транзакции подтверждались менее чем за 10 блоков. В целом увеличение комиссии ускоряло обработку транзакции как при тестировании, так и в обычном режиме. По диаграмме также ясно, что время подтверждения при тестировании увеличилось для всех категорий транзакций в сравнении с обычным режимом.

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Из этого правила выбивается лишь категория с комиссией 45-50 сатоши за байт. Это объясняется тем, что данная категория включает в основном длинные цепи неподтвержденных транзакций, отправленных в сеть одна за другой с небольшим интервалом. Эти транзакции не только перегрузили пул в памяти узлов, но и чаще остальных интерпретировались как спам из-за очень малого “возраста” монет.

Аналогичная тенденция заметна и при сравнении времени подтверждения в зависимости от величины транзакций. Учитывая, что около 80% транзакций при тестировании относились к категории 0-1 XBT, время подтверждения сильнее всего выросло для этой категории, но и все остальные транзакции обрабатывались при высокой нагрузке дольше.

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Размеры блоков, их пределы и хешрейт

За 7 с половиной часов тестирования майнеры сгенерировали 30 блоков, тогда как при 10-минутном интервале их должно было быть 45. Мы не уверены, в чем причина уменьшения количества блоков, но статистический анализ указывает, что оно может быть напрямую связано с бОльшим количеством транзакций в каждом блоке.

Согласно приведенной ниже диаграмме, 67% блоков, созданных в ходе тестирования, имели размер около 750 КБ, который по умолчанию задан в стандартном биткойн-клиенте (в обычном режиме за январь-май 2015 года в эту категорию попало 15% блоков). Пулы DiscusFish и Eligius используют блоки с ограничением в 1 МБ — максимумом согласно текущему протоколу. После нагрузочного тестирования пулы BTCChina и AntMiner также увеличили предельный размер до 1 МБ. В общем, 5 из 10 крупнейших майнеров создают блоки, ограниченные пределом 750 КБ, а другие 5 — блоки с пределом 900-1000 КБ.

Интересно отметить, что 35% блоков, созданных в ходе тестирования, не были полными, а один блок был вообще пуст, несмотря на большое количество транзакций в пуле, ожидающих подтверждения. Это означает, что моделирование, описанное в 4-й части, на самом деле отражает наилучший сценарий, тогда как в действительности майнинг неполных блоков может снижать пропускную способность сети.

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

За 7 с половиной часов тестирования пул BTCChina обнаружил 20% блоков, что значительно выше его типичного хешрейта, составляющего около 8% сети. Пул DiscusFish обнаружил только два блока, что соответствует 7% (в сравнении с 19% в обычном режиме). Конечно, к этим данным следует относиться скептически, но для статистически значимой выборки из 30 элементов это указывает на вероятное наличие некоторой неучтенной переменной, вызывающей отклонение результатов от случайного распределения.

Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования

Заключительные мысли

Подытожим результаты нагрузочного тестирования.

  • Когда сеть работает на пределе возможностей, время подтверждения транзакций увеличивается для всех категорий комиссий и величин транзакций.
  • Когда транзакции конкурируют за включение в блок, указание более высокой комиссии позволяет ускорить обработку транзакции.
  • Несмотря на значительное количество транзакций, ожидающих подтверждения, некоторые блоки остаются незаполненными, что свидетельствует об имеющейся у майнеров власти отказывать пользователям в обрабокте транзакций по своему усмотрению.
  • Пять из десяти крупнейших майнеров создают блоки с пределом в 750 КБ, а другие пять — с пределом в 900-1000 КБ.
  • Количество блоков, созданных во время тестирования, оказалось меньше ожидаемого (30, а не 45), а доля блоков, сгенерированных некоторыми майнерами, существенно отличалась от обычного режима. Это позволяет предположить, что при высокой нагрузке на сеть хешрейт одного или нескольких майнеров заметно снижается.

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

Просмотреть данные блокчейна в реальном времени можно с помощью инструментов TradeBlock.

Источник

Возможно вам понравятся эти статьи...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *