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

Blockchain-Scalability-When-Where-How-

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

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

image8

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

image10

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

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

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

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

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

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

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

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

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

image9

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

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

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

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

image12

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

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

image11

Источник: Etherscan.

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

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

image14.png

Источник: Hackernoon.

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

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

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

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

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

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

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

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

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

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

image13

Источник: Trust Nodes.

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

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

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

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

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

bg

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

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

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

image15

Источник: youtube-канал djp3.

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

image17 (1)

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

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

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

image17 (1)

Видите их? Алиса ссылается только на одну транзакцию, так как 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 года.

image28

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

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

Плюсы:

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

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

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

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

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

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

Минусы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

image22

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

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

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

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

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

Источник.

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

 



Рубрики:Анализ, Новичкам, Теория, Ethereum

Метки: ,

1 reply

Trackbacks

  1. Масштабируемость блокчейнов: когда, где, как? - crypto4.info

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s