Масштабируемость блокчейнов (Часть 1)

Криптовалюты привлекают к себе все больше внимания. Взгляните на темпы роста популярности Биткоина и Эфириума. Изначально архитектура криптовалют не была рассчитана на широкое использование и внедрение. Пока транзакций было немного, всё работало нормально, но, как только криптовалюты обрели популярность, начались проблемы.

График ниже отображает количество ежедневных транзакций в сети Биткоина по годам:

А здесь можно помесячно посмотреть число транзакций в сети Эфириума за последние годы:

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

Проблема масштабируемости криптовалют

Для того чтобы Биткоин и Эфириум могли конкурировать с такими популярными системами, как Visa и PayPal, необходимо существенно снизить время проведения транзакций. PayPal обрабатывает 193 транзакции в секунду, а Visa – 1667. За то же время Эфириум и Биткоин обрабатывают намного меньше. Единственный способ улучшить положение –это решить проблемы, связанные с масштабируемостью.

Среди них можно выделить две основные:

  • время, которое затрачивается на включение транзакции в блок;
  • время, необходимое для достижения консенсуса.

Время включения транзакции в блок

В сетях Биткоина и Эфириума транзакция завершается, когда майнер вносит ее данные в добытый им блок. Предположим, что Алиса хочет послать Бобу 4 BTC. Для этого она отправит майнерам данные транзакции. Они, в свою очередь, внесут эти данные в блок, и тогда транзакция будет считаться завершенной.

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

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

Заплатив такую комиссию, в среднем вам придется ожидать завершения транзакции 13 минут.

В большинстве случаев период ожидания связан со временем формирования нового блока (которое в сети Биткоина составляет около 10 минут), так как более старые блоки уже наполнены транзакциями. Размер блока в сети Биткоина составляет 1 Мбайт (в будущем он может быть увеличен), что сильно ограничивает пропускную способность.

А что насчет Эфириума?

Теоретически сеть Эфириума способна обрабатывать 1000 транзакций в секунду. Но на практике количество расходуемого для формирования каждого блока «газа» в ней ограничено 6,7 млн единиц.

Для того чтобы понять, что такое газ, представьте следующую ситуацию. Алиса создает смарт-контракт для Боба. Боб видит, что для выполнения заложенных в нем действий потребуется X единиц газа. Газ представляет собой плату за вычислительные ресурсы, которые расходуются в процессе выполнения программ. Соответственно, Боб заплатит за то количество газа, которое потребуется для исполнения кода контракта.

Вот так выглядит график цены газа:

Источник: Etherscan

Как это влияет на масштабируемость блокчейна?

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

Источник: Hackernoon

То есть и здесь количество транзакций ограничено.

Время, необходимое для достижения консенсуса

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

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

Но если центрального органа управления нет, как участники системы узнают о проведении какой-либо транзакции? В сети используется протокол Gossip (англ., слухи). Все мы знаем, как распространяются слухи. Предположим, что Алиса посылает Бобу 3 ETH. Ближайшие к ней ноды узнают об этом, а затем расскажут новость своим соседям, а те, в свою очередь, передадут ее дальше. Таким образом новость будет распространяться, пока о ней не узнает вся сеть. Ноды можно сравнить с любопытными и надоедливыми родственниками.

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

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

Если в сети находятся, например, 3 ноды, то процесс занимает одно время.

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

В особенности эта проблема касается Эфириума, так как его сеть насчитывает наибольшее количество нод. Из-за ICO-лихорадки все захотели заработать на майнинге Эфириума, что привело к значительному росту числа нод в его сети. По данным на май 2017 года, в сети Эфириума насчитывалось 25 000 нод, а в сети Биткоина – только 7000! Количество нод в период с апреля по май увеличилось на 81 %!

Источник: Trust Nodes

Как можно решить проблемы масштабируемости блокчейна?

Команды Эфириума и Биткоина разработали ряд решений. Некоторые из них уже были реализованы, другие еще нет. Рассмотрим основные из них:

  • SegWit;
  • увеличение размера блоков;
  • шардинг;
  • Proof of Stake;
  • офчейн-каналы состояния;
  • Plasma.

SegWit (решение только для Биткоина)

Доктор Питер Вюлле (Peter Wiullе) из Blockstream представлял SegWit, или Segregated Witness, как один из вариантов сайдчейна, который будет работать параллельно основному блокчейну Биткоина.

После активации SegWit все данные подписей каждой транзакции будут переноситься из основной цепочки в сайдчейн. Что такое данные подписи? Давайте рассмотрим подробнее, какие данные включает в себя транзакция.

Код транзакции

Предположим, что Алиса хочет отправить Бобу 0,0015 BTC, и чтобы это сделать, она посылает входные данные с суммой 0,0015770 BTC. Вот так выглядит код транзакции:

Первое, что вы видите,

это имя транзакции, или хеш входного и выходного значений.

  • Vin_sz – число входов. Так как Алиса посылает данные, ссылаясь только на одну из своих предыдущих транзакций, здесь стоит 1.
  • Vout_sz имеет значение 2, потому что выходами служат суммы для Боба и для сдачи.

Это входные данные:

Видите их? Алиса ссылается только на одну транзакцию, так как vin_sz – 1. Входные данные – 0,0015770 BTC.

Под входными данными находятся данные ее подписи (запомните это).

Еще ниже располагаются выходные данные:

  • Первая часть указывает, что Боб получает 0,0015 BTC.
  • Вторая часть указывает, что 0,00005120 BTC Алиса получает обратно в качестве сдачи.
  • Вы помните, что во входных данных значилась сумма 0,0015770 BTC? Она больше, чем сумма от 0,0015 и 0,00005120. Эта разница служит комиссией за проведение транзакции, которую получают майнеры.

Так изнутри выглядит простая транзакция.

Что произойдет после активации SegWit?

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

Что произойдет после активации SegWit?

Данные подписи будут переноситься из основного блокчейна в дополнительный блок в параллельной цепочке.

Это освободит пространство в самом блоке и позволит включать в него больше транзакций.

Предполагалось, что данные подписей будут размещаться в сайдчейне в форме дерева Меркла. Корень дерева должен был располагаться в блоке вместе с coinbase-транзакцией (первая транзакция в каждом блоке, которая содержит вознаграждение за его добычу). Но, внедрив обновление, разработчики получили неожиданный результат. Разместив корень здесь, они каким-то образом увеличили общий размер блока!

SegWit активировали 24 августа 2017 года.

Источник: segwit.co.

Плюсы и минусы SegWit

Плюсы:

  • Увеличивает количество транзакций, которое можно включить в блок.
  • Снижает комиссии.
  • Уменьшает размер каждой отдельной транзакции.
  • Ускоряет подтверждение транзакций, так как сокращает время ожидания.
  • Помогает решить проблему масштабируемости Биткоина.
  • Так как это обновление увеличивает число транзакций в каждом блоке,

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

  • Устраняет пластичность транзакций (transaction malleability) и способствует активации протокола Lightning (подробнее об этом позже).
  • Устраняет проблему квадратичного хеширования, которая возникает при увеличении размера блоков. Ее суть состоит в том, что с увеличением размера определенных транзакций время хеширования их данных возрастает квадратично.

Источник: Bitcoincore.org.

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

SegWit решает эту проблему, меняя способ вычисления хеша подписи, что в результате оптимизирует весь процесс.

Минусы:

  • Майнеры будут получать более низкую комиссию с каждой транзакции.
  • Сложная реализация; разработчикам кошельков придется

    самостоятельно реализовывать поддержку SegWit. Велика вероятность, что в первый раз не обойдется без ошибок.

  • SegWit значительно повысит расход ресурсов, так как увеличится ёмкость блока, число включаемых транзакций, пропускная способность и т. п.
  • Учитывая появление Bitcoin Cash, это обновление разделило сообщество Bitcoin Core.
  • Еще одна проблема SegWit – это поддержка. Сайдчейн, который содержит данные подписей, необходимо поддерживать силами майнеров. Но они не получают вознаграждений за его обслуживание. И либо они будут тратить свои вычислительные ресурсы безвозмездно, либо разработчикам придется внедрять некую схему стимулирования.

Увеличение размера блоков

Если основная проблема Биткоина и Эфириума заключается в ограниченном размере блоков, почему бы просто его не увеличить? Изначально размер блоков Биткоина не был ограничен 1 Мбайт. Но Сатоши и его команда были вынуждены установить этот лимит, так как не хотели, чтобы блокчейн Биткоина был заспамлен нежелательными транзакциями.

В теории это было хорошей идеей, но на практике все оказалось иначе. Это породило множество споров в сообществе Биткоина. Сообщество разделилось на тех, кто поддерживает увеличение размера блоков, и тех, кто выступает против. Рассмотрим некоторые аргументы каждой стороны.

Аргументы против увеличения размера блоков

  • Майнеры лишатся мотивации, так как снизятся комиссии.

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

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

Аргументы в пользу увеличения размера блоков

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

    комиссий за выполнение транзакций, из которых складывается вознаграждение майнеров.

  • Биткоин должен развиваться и стать более доступным для простых людей. Если размер блока не изменится, велика вероятность того, что комиссии будут повышаться. В таком случае обычные люди никогда не станут пользоваться биткоинами, и они превратятся в валюту исключительно для богатых и больших корпораций. Такой вариант никогда не входил в цели проекта.
  • Изменения не вступят в силу моментально, это постепенный процесс. Люди очень боятся внезапных перемен, которые могут привести к серьезным последствиям. Но те, кто выступает за увеличение размера блоков, думают, что у этого страха нет оснований, так как большая часть изменений будет вноситься постепенно.
  • Многие уже поддерживают увеличение размера блока, и те, кто не одумается сейчас, отстанет от прогресса и может остаться позади.
  • SegWit не является необратимым обновлением.

Кроме того, 21 мая 2017 года было заключено соглашение New York Agreement, по условиям которого SegWit должен быть активирован, а размер блоков – увеличен до 2 Мбайт.

Источник: статья DCG в Medium

Люди, которым не нравилась идея активации SegWit, создали форк основной цепочки под названием Bitcoin Cash, где размер блоков увеличен до 8 Мбайт.

В сообществе Эфириума также звучало предложение об увеличении размера блока, но по ряду причин людей такой вариант не устраивает.

  • Масштабируемость Эфириума в первую очередь ограничивается скоростью достижения консенсуса между нодами. Увеличение размера блока не решит эту проблему. Скорее, даже усугубит, так как из-за увеличения ёмкости блока каждая нода будет обрабатывать больше транзакций, то есть выполнять больше проверок и вычислений.
  • Число транзакций будет постепенно расти, и чтобы размещать их, придется периодически увеличивать размер блока. Это приведет к централизации системы, потому что обычные пользователи не смогут хранить на своих компьютерах настолько громоздкие блокчейны, а это уже противоречит концепции равноправия участников сети.

  • Чтобы увеличить размер блока, необходимо провести хардфорк, а это может разделить сообщество. Во время одного из важных хардфорков в сети Эфириума сообщество уже разделилось, и в результате появились две отдельные валюты. Люди не хотят, чтобы это повторилось.

(Продолжение следует)

Источник: cryptocurrency.tech

No votes yet.
Please wait...

Ответить

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