Анализ биткойн-сети, часть 6: распространение данных

msbt_0201

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

Часть 1: блоки
Часть 2: транзакции
Часть 3: майнинг
Часть 4: моделирование будущей нагрузки
Часть 5: анализ нагрузочного тестирования

Распространение данных

Для нормальной работы биткойн-экосистемы крайне важно своевременное распространение данных в сети. Скорость распространения данных можно измерить, подключившись к большому количеству узлов сети и собрав нужные данные в реальном времени. У TradeBlock имеется доступ к большому количеству биткойн-узлов в разных регионах, и благодаря возможности просмотра и записи всех сообщений, транслируемых в сеть, мы смогли получить некоторые интересные результаты.

tr1

На приведенной выше диаграмме показана средняя скорость распространения блоков в 2015 году. Для ее измерения мы регистрируем моменты, когда каждый узел биткойн-сети ретранслирует блок данных, и вычисляем время между первой и последующими ретрансляциями. Ниже мы рассмотрим различные показатели распространения данных в сети и как они могут измениться при увеличении размера блоков. Кроме того, мы обсудим, как это может повлиять на мотивацию и поведение майнеров.

Скорость распространения и гонки блоков

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

Более того: на отвергнутый блок, который еще называют “сиротой” (“orphan”), не ссылаются последующие блоки, а майнер, создавший блок-сироту, не получает награду в виде coinbase-транзакции. На приведенной ниже диаграмме показано количество блоков-сирот, добытых в каждый день, начиная с середины апреля. В среднем майнеры создавали 1,3 таких блока в день, или около 1% от всех блоков.

tr2

На следующей диаграмме показаны результаты анализа гонок сирот за последние три месяца. Очевидно, что проигравшие гонку блоки в большинстве случаев достигали меньшего количества узлов в сравнении с победителями. Хотя в конкретный момент в биткойн-сети активно примерно 6000 узлов, судя по этим данным, доставка блока до 3000 узлов обеспечивает 90-процентную вероятность того, что этот блок победит в гонке сирот. Похоже также, что в большинстве случаев побеждает тот блок, который был первым отправлен в сеть. Это подтверждается тем фактом, что большинству гонок соответствуют положительные значения x (количество секунд между отправкой блока, попавшего в блокчейн, и блока-сироты).

tr3

Возникает вопрос, связана ли вероятность победы блока в гонке с его размером. Как показано на следующей диаграмме, блоки, участвующие в гонке, в среднем примерно на 100 КБ или на 20% больше, чем обычные блоки, не участвующие в гонке. Вероятно, это связано с тем, что на ретрансляцию более крупных блоков требуется больше времени.

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

tr4

Скорость распространения, размер блоков и майнинг

Учитывая важность своевременного распространения блоков, мы проанализировали отношение между скоростью распространения, размером блоков и географическим расположением майнера. Наш набор данных включает данные за апрель — июнь 2015 года. Судя по диаграмме, наблюдается непосредственная связь между размером блоков и временем достижения указанного выше критического порога в 3000 узлов. Например, распространение блока размером 700+ КБ занимает примерно 17 секунд, а блока размером 200-300 КБ — всего 6 секунд.

tr5

Мы также выяснили, зависит ли время доставки блока до 3000 узлов от майнера. Похоже, что большинство майнеров попадают в пределы одного стандартного отклонения от среднего значения (среднее = 9,6 с, медиана = 7,2 с.). Из ряда выбиваются китайский пул BW Pool (21 секунда) и польская майнинг-компания Polmine (4 секунды).

Пометив каждый блок метками, указывающими географическое расположение релевантных майнеров, можно получить более общее представление о времени распространения блоков в разных регионах. Как показано ниже на второй диаграмме, региональными различиями можно объяснить лишь небольшие вариации скорости распространения. В целом европейские майнеры демонстрируют скорость чуть выше средней, а майнеры из Китая (после коррекции с учетом BW Pool) и США ретранслируют блоки немного медленнее. Возможно, однако, что данные по блокам, обнаруженным в Китае, измеримы только за пределами ‘Великого файрвола’, и тогда подлинное время распространения блоков неизвестно.

tr6

tr7

 

Выводы для дискуссии о размере блоков

Полученные результаты по-настоящему важны для текущей дискуссии о размере блоков. Мы показали, что (1) наблюдается прямая связь между размером блока и временем его распространения по сети и что (2) блоки, участвующие в гонке сирот, в среднем значительно больше, чем блоки, в ней не участвующие.

По установленным скоростям распространения блоков размером до 1 МБ можно путем экстраполяции вывести время распространения блоков бОльших размеров. Как показано на приведенной ниже диаграмме линейной регрессии, на распространение полного блока размером 8 МБ по сети при текущих технических возможностях потребовалось бы примерно 137 секунд.

tr8

Хотя в части 2 мы обоснованно предположили, что в ближайшее время не следует ожидать появления полных блоков размером 8 МБ, дополнительная задержка в 2 с лишним минуты может стать в будущем существенной проблемой. Каждая секунда задержки повышает вероятность того, что сетью будет признан конкурирующий блок, а это лишает майнеров мотивации включать в блок больше транзакций. Уже предложено несколько решений этой проблемы, в том числе создание опорной (backbone) сети для майнинга, обновления кэша транзакций и использование обратимых таблиц поиска Блума (Invertible Bloom Lookup Tables). Однако пока они не реализованы, распространение крупных блоков может представлять количественно измеримый риск для доходов майнеров.

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

Источник: tradeblock.com



Categories: Инфраструктура, Майнинг, Теория, Технологии

Tags:

9 replies

  1. То, что блоки сделаю по 20 мб ничего не даст, если майнеры выставят ограничения в 1 мб и все. У кого-то такие блоки пройдут, а у кого-то отправятся на 10 круг ада.
    Проблему решит рост стоимости транзакций. Если пользоваться чем-то вроде 6 подтверждений и считать, что биткоины уже нельзя вернуть, то в принципе магазинам пофиг когда к ним придет оплата – через час или сутки. Придет и придет. С ростом сети первые 6 подтвердений поймать будет очень легко и быстро, главное полных клиентов побольше и все.

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

  3. не прошло и пол года…

  4. Как уже не раз говорилось, майнерам плевать на безопасность сети. Главное это доход. Текущий стресс-тест наглядно это показал. При максимально возможном размере блока 1000 Кб фактически заполняются лишь на треть. Описанный анализ дает понимание почему. Потому что для распространения, и принятия, полностью заполненного блока нужно больше времени, чем для пустого. Если найдено сразу два одинаковых блока, то сетью будет принят тот, который распространиться быстрее, и это будет блок меньшего размера.

    Похоже пора в алгоритм вносить изменения которые касаются не только удобства обработки блоков. Но и контроль за их наполнением. Если в очереди объем транзакция 20 Мб, а майнер при максимально возможных 1 Мб заполняет блок лишь на половину, то сеть не должна принимать такой блок! Зачем сети такой хитроумный майнер? Кто то должен тратить ресурсы и время для поддержания работы сети, а кто то только гонится за наградой, и плюет на всех остальных. При этом другим, тем кто честно заботится о безопасности, сложно конкурировать с таким игроком. Это в чистом виде ЧИТИНГ. Зачем сети ЧИТЕРЫ?

    • Блок 8 Мбайт будет давать в 8 раз больше денег
      То есть вместо 1% от 25 btc будет 8 процентов от 25 btc.
      Или вместо 2% от 12.5 btc будет 16% от 12.5 btc.

      Такой рост вполне скомпенсирует потери от скорости распространения блока.

      А вообще противники увеличения размера блока должны обратить внимание на комиссии транзакций. Чем они больше, тем с меньшей скоростью растет блокчейн и тем больше пустых блоков. Пустые блоки это хорошо. Косвенно это означает что в пуле транзакций одна пыль, которую не нужно добавлять в блокчейн.

      • Не понял, что за 1% от 25 btc, или 2% от 12.5 btc?

      • Пока блок 8Mb будет распространяться по узлам будет найден блок 1Мь который обгонит ранее найденный большой блок и сделает его устаревшим, и большей награды никто не получит.

        • Блок 8 Мбайт даст на 16 процентов больше денег. Поэтому большие блоки манить выгоднее

Поделитесь своими мыслями

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: