Анализ биткойн-сети : распространение данных2015/07/14
Эта статья продолжает серию TradeBlock, посвященную анализу блокчейна и биткойн-сети в контексте размера блоков.Распространение данныхДля нормальной работы биткойн-экосистемы крайне важно своевременное распространение данных в сети. Скорость распространения данных можно измерить, подключившись к большому количеству узлов сети и собрав нужные данные в реальном времени. У TradeBlock имеется доступ к большому количеству биткойн-узлов в разных регионах, и благодаря возможности просмотра и записи всех сообщений, транслируемых в сеть, мы смогли получить некоторые интересные результаты.
На приведенной выше диаграмме показана средняя скорость распространения блоков в 2015 году. Для ее измерения мы регистрируем моменты, когда каждый узел биткойн-сети ретранслирует блок данных, и вычисляем время между первой и последующими ретрансляциями. Ниже мы рассмотрим различные показатели распространения данных в сети и как они могут измениться при увеличении размера блоков. Кроме того, мы обсудим, как это может повлиять на мотивацию и поведение майнеров.
Скорость распространения и гонки блоковКогда двое или более майнеров находят блок примерно в одно время, в сеть поступают два (или более) альтернативных блока, которые могут стать отправными пунктами для расчета следующего блока. Поскольку майнеры направляют свои вычислительные ресурсы на обработку цепи, заключающей в себе бОльшую часть проделанной работы (обычно это цепь с наибольшим количеством блоков), скорость распространения блоков в таких ситуациях приобретает особенно важное значение. Вообще говоря, блок, ретранслированный узлами бОльшее число раз, имеет более высокие шансы на “выигрыш гонки” при добавлении вслед за ним следующего обнаруженного блока.
Более того: на отвергнутый блок, который еще называют “сиротой” (“orphan”), не ссылаются последующие блоки, а майнер, создавший блок-сироту, не получает награду в виде coinbase-транзакции. На приведенной ниже диаграмме показано количество блоков-сирот, добытых в каждый день, начиная с середины апреля. В среднем майнеры создавали 1,3 таких блока в день, или около 1% от всех блоков.
На следующей диаграмме показаны результаты анализа гонок сирот за последние три месяца. Очевидно, что проигравшие гонку блоки в большинстве случаев достигали меньшего количества узлов в сравнении с победителями. Хотя в конкретный момент в биткойн-сети активно примерно 6000 узлов, судя по этим данным, доставка блока до 3000 узлов обеспечивает 90-процентную вероятность того, что этот блок победит в гонке сирот. Похоже также, что в большинстве случаев побеждает тот блок, который был первым отправлен в сеть. Это подтверждается тем фактом, что большинству гонок соответствуют положительные значения x (количество секунд между отправкой блока, попавшего в блокчейн, и блока-сироты).
Возникает вопрос, связана ли вероятность победы блока в гонке с его размером. Как показано на следующей диаграмме, блоки, участвующие в гонке, в среднем примерно на 100 КБ или на 20% больше, чем обычные блоки, не участвующие в гонке. Вероятно, это связано с тем, что на ретрансляцию более крупных блоков требуется больше времени.
Получив блок, узел должен проверить список транзакций в нем по собственному пулу, находящемуся в памяти. Таким образом, каждая транзакция потенциально может тормозить обработку блока при каждой ретрансляции в дополнение к увеличению времени передачи данных. Это означает, что майнерам приходится тратить больше времени на хеширование предыдущего блока.
Скорость распространения, размер блоков и майнингУчитывая важность своевременного распространения блоков, мы проанализировали отношение между скоростью распространения, размером блоков и географическим расположением майнера. Наш набор данных включает данные за апрель — июнь 2015 года. Судя по диаграмме, наблюдается непосредственная связь между размером блоков и временем достижения указанного выше критического порога в 3000 узлов. Например, распространение блока размером 700+ КБ занимает примерно 17 секунд, а блока размером 200-300 КБ — всего 6 секунд.