Анализ биткойн-сети, часть 4: моделирование будущей нагрузки

jzhlbae

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

Моделирование пропускной способности биткойн-сети

Во второй части нашего анализа мы выяснили, что в своей нынешней форме биткойн-сеть может стабильно обрабатывать примерно 3 транзакции в секунду (TPS). На текущий момент в 2015 году нагрузка на сеть составляет в среднем 1,2 TPS, однако из-за увеличения количества транзакций этот показатель постепенно растет. В этой части мы рассмотрим, к чему это может привести на практике, и попытаемся оценить, когда при условии сохранения текущих темпов роста в сети начнут наблюдаться заметные задержки подтверждения транзакций.

a1

Чтобы собрать сведения о том, как будет работать сеть при большом количестве транзакций, 29-30 мая было проведено нагрузочное тестирование, результаты которого показаны на приведенной ниже диаграмме. Как видите, при пиковой нагрузке в пуле (список транзакций, ожидающих добавления в блок, в памяти компьютера) находилось около 26 тысяч транзакций. Даже в идеальных условиях, а именно при полном заполнении всех блоков, для обработки всех этих транзакций потребовалось бы 14 блоков (или 2,5 часа).

a2

Моделирование методом Монте-Карло

Для практического анализа заполнения блоков при различной нагрузке мы провели моделирование методом Монте-Карло, использовав исторические сведения о размере транзакций. Для каждого уровня TPS мы смоделировали 1 миллион блоков и оценили, хватило ли ресурсов сети для обработки всех поступивших транзакций. Технические подробности модели см. в конце статьи.

 a3

Наблюдения:
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.

a4

Сколько у нас времени?

Результаты моделирования и прогноз в отношении роста количества транзакций позволяют оценить, когда в сети начнут наблюдаться заметные проблемы с масштабируемостью. Во второй части мы оценили совокупный среднегодовой темп роста количества транзакций с 2013 года. Ниже мы воспроизводим ту диаграмму со средним значением TPS по оси ординат (а не количеством транзакций в сутки).

a5

В общем, при сохранении текущих темпов роста эффекты, связанные с исчерпанием ресурсов сети, скорее всего, проявятся раньше достижения теоретического предела в декабре 2016 года: так, к июлю 2016 года обработка типичной транзакции станет дольше на 1 блок. Более того, в анализе предполагается, что размер блоков ограничен 1 МБ, тогда как в стандартных биткойн-клиентах предел составляет примерно 732 КБ (см. первую часть). Это означает, что задержки могут стать заметны еще раньше.

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

Вероятностные характеристики модели:

  • Время между блоками соответствовало экспоненциальному распределению со средним значением 10 минут.
  • Транзакции генерировались согласно распределению Пуассона со средним значением, зависящим от TPS.
  • Размер транзакций соответствовал нормальному распределению с характеристиками, имевшими место в последние 30 дней: среднее значение = 543 байта; стандартное отклонение = 1759 байтов.

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



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

26 replies

  1. Почему бы просто не выстраивать транзакции в очередь по отношению количества_байт/комиссия. Тогда бы те, кому действительно нужно совершить платёж без проблем могли его совершить. Мне кажется неразумно иметь одинаковую комиссию для транзакций разного размера. Кто-то просто деньги пересылает, а кто то свои фотографии в блокчейн записывает.

    • так и делается.

      Для каждой транзакции вычисляется приоритет:

      priority = sum(input_value_in_base_units * input_age) / size_in_bytes

  2. Если транзакция не попала в блок, то будет ли у неё приоритет попадания в следующий блок по сравнению с новыми транзакциями? Если да, то можно просто подождать. Если же нет, то тогда она может никогда не подтвердиться.

    • транзакции обрабатывают майнеры, майнеры майнят объединяясь в группы, группа устанавливает комиссию за которую готова работать – это на всякий пожарный предыстория. следовательно, если комиссия вашей транзакции какой либо группой принята, попадает в очередь этой группы.
      а если внимательно почитать оригиналы цикла статей на английском(там их 5), из 3-ей станет ясно, что очередь может вполне состоять из 20 блоков по 1мб уже к концу 2016, что обеспечит комиссии в 2 раза выше нынешних.

      • пардон, если блок увеличат до 20мб вот тогда комсы вдвое, а так в 100500

  3. Если майнеры могут голосованием увеличить размер блока, то что мешает им убрать ограничение количества монет?

    • Это угробит Биткойн и лишит их дохода – очевидно же.

      • почему, когда цб банки (те же майнеры) печатают деньги, это их не лишает дохода?

        ЦБ теоретически могут тоже решить не обсценивать свой швейцарский франк, доллар, йену, евро или рубль, чтобы не лишать себя дохода. Но они этого не делают. Они печатают и получают другой – эмиссионный доход.

        майнеры могут сказать – биткойн переоценен и мы, чтобы стабилизировать цены, немножко увеличим количество биткойнов. Не на 5% в год, а на 10% в год.

        сами майнеры платят за электричество, а биткойны продают на бирже, то есть на биткойн им по большому счету пофиг, они могут майнить любую другую sha256 криптовалюту. То есть им неважно будущее биткойна. Им важно сейчас увеличить доход от майнинга, чтобы заплатить за электричество. А для этого надо

        • Сравнивать ЦБ с майнерами ошибка. Максимум – майнеры это монетный двор, и им очень важно чеканить 100% золотые монеты, а увеличение количества монет в крипте – это уменьшение количества метала золота в монетах, как это было в древнем риме. В крипте ЦБ это связка бирж, майнеров и пользователей и в этом преимущество крипты.

          • ЦБ владеет монетным двором и говорит ему сколько печатать и как сильно уменьшать количество золота в монетах.

            Майнеры Юрлица или Майнеры Физлица владеют Майнерами компьютерами.
            Майнеры юрлица – аналог ЦБ
            Майнеры компьютеры – аналог монетного двора и печатного станка.

            Мотивы у ЦБ и у Майнеров вроде как одинаковые.

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

          • Монетный двор не получает дохода от инфляции денег напрямую.
            А майнеры получают. То есть майнеры гораздо ближе к ЦБ.

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

            Если бы майнеры хотели бы комиссии, то они были бы против увеличения размера блока, комиссия бы выросла в 20-40 раз. Но этого не происходит. То есть майнеры как ЦБ живут за счет печатного станка. Как только он закончится по протоколу, они сменят протокол.
            И 99 процентов мощностей будет в форке, который печатает биткойны больше, чем было задумано.

            • В крипте майнеры стремятся стать ЦБ, они хотят жить за счет эмиссии – это вы правильно заметили. И чем дальше будет концентрироваться майнинг, тем больше они начнут походить на современный ЦБ. Это уже прослеживается в нежелание майнеров увеличивать блок, а дальше ничто их не остановит от изменения протокола. Поэтому так много попыток создать альт с защитой от асиков, там роль майнеров будет ближе к монетному двору, чем к ЦБ.

            • Если бы майнеры хотели бы комиссии, то они были бы против увеличения размера блока, комиссия бы выросла в 20-40 раз. Но этого не происходит.

              а по моему приблизительно это и происходит. майнеры орут во всю о своей важности и что блок увеличивать до 20мб – шпыгунство, растление духовных ценностей самой святой идеи социализма 🙂 – чушь о том что как будто именно это убъёт биткоин. вот уже с начала месяца буквально в открытом доступе лежат результаты стресс-теста с подробным описанием до мелочей наглядно демонстрирующим, что даже при увеличении до 20мб/блок – комисии выростут вдвое. уже на все языки мира перевели, читай только и вникай. казалось бы ну всё, чего вам ещё надо!? рост итак будет в 2-3 раза не считая паники в преддверии середины 2016, так нет жеж. им всё мало! будут сказки рассказывать до последнего зеваки…

          • Зачем 20 мб? ведь известно,что блоки пока еще существенно ниже 1 мб, а многие так вообще по 300кб. Нельзя так спешить. Имхо, лучше всего поднять до 2 мб и может что-то еще придумать. И то не сейчас подымать, а к концу года, скажем или по ситуации.

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

    • потому что это не имеет смысла, т.к. приведет к инфляции и подорвет доверие к биткоину и криптовалюте в целом. Получится майнеры потеряют все что имеют.

      Как верно заметили, важно чеканить 100% золотые монеты, а не смеси.

      Майнеры это обслуживающие элементы биткоин сети, они не создают рынок, его создают простые пользователи. Как без одих, так и без других не будет рынка и смысла.

      Ну или представьте, что какой-нибудь админ(или кучка админов скажем Ростелекома) начали самоуправство на серверах компании(резать каналы,снижая проскную способность, повышать тарифы по своему желанию и т.д.), в итоге они быстро лишаться клиентов. Хотя казалось бы они старались на повышение дохода компании.

      • Майнеры не имеют биткойны, они их продают пользователям биткойна на бирже, чтобы заплатить за электричество.
        Кто сейчас при таком низком курсе продает биткойны на бирже? Правильно – майнеры.
        Если бы майнеры верили в биткойн, то продаж по такой цене не было бы.

        Конечно есть майнеры, которые являются и пользователями, но кто вас сказал, что таких большинство? Цена биткойна говорит об обратном.

        Доллар тоже не имеет смысла печатать, так как это приведет к инфляции и подорвет доверие к доллару, как к резервной валюте, в которой хранят деньги центральные банки всего мира. Получится ФРС США потеряет всё, что имеет. Но по факту мы видим 7-10 процентов в год печатного станка. А какова логика? Нам надо печатать доллары, чтобы выравнять спрос на деньги. Когда спрос очень большой, мы печатаем. Когда маленький, мы изымаем. А в среднем печатаем, чтобы получать доход от инфляции. То есть ФРС США не за счет процентов от переводов живёт. И у него получается. Любой кризис в России – все бегут покупать доллары. Не золото. И даже не швейцарские франки, которых печатают меньше.

        То есть доверие создается другими способами. А изначальная якобы ограниченная эмиссия – чтобы набрать пользовательскую базу.

  4. выходит 20мб на блок – это с запасом в 4 раза? леонардо да винчи был бы рад услышав такую цифру 🙂 следующий запас будет в 16 раз – 320мб/блок. к концу 2020-го – 80мб/блок?

    • если сейчас 1 мб это запас в 2 раза, то 20 мб = запас в 40 раз наверно.

    • это я загнул конечно.. и забыл посчитать 6-ой блок, извинтиляюсь.
      6мб к концу 2016 – около 3транз/сек – не маловато? 18мб блок к этому времени обеспечит 9транз/сек стало быть? тоже как-то мало на фоне визы.. виза получается около двух тыщ транз/сек судя по предыдущим статьям.. исходя из этого битку надо блоки по 12гб к 2016. без дисков на пару петабайт тут не обойтись короче… а лучше на пару эксабайт сразу :-р

      • это все очень приблизительно, очень вероятно будет иначе. Как только люди массово повалят в биткоин, нагрузка будет огого и расчеты будут совершенно неверны.

        • само собой! прогнозирование – дело тонкое. а вышесказанное – лишь мои прикидки опирающиеся на данные с трэйдблока. но всёж если люди, как вы говорите, буквально массово повалят, то парочку эксабайтов всётаки хватит на некоторое время. жаль вот только закон Мура не вписывается в такой сценарий, а если ему верить то дисок в 1эксабайт только к 2049, потом держать транзы за последние 7 лет – вполне достаточно – опять мои прикидки если что. поэтому есть мнение, что либо не повалят, либо блокчейн переедит на суперкомпьютер – и прощай мокрые мечты социал-пацифистов о светлом децентрализованом будущем, как минимум, лет эдак на 30-40, что тоже неплохо для авантюриста! лишь бы люди повалили массово 🙂 а вот зачем им валить “туда незнаю куда”? тем более когда система в принципе не способна конкурировать с визой и быть децентрализованой? вот тут я крепко задумался..

Trackbacks

  1. Анализ биткойн-сети, часть 5: анализ нагрузочного тестирования | Bit•Новости
  2. Анализ биткойн-сети, часть 6: распространение данных | Bit•Новости

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

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: