26 марта 2018 Криптовалюта.Tech
Криптовалюты привлекают к себе все больше внимания. Взгляните на темпы роста популярности Биткоина и Эфириума. Изначально архитектура криптовалют не была рассчитана на широкое использование и внедрение. Пока транзакций было немного, всё работало нормально, но, как только криптовалюты обрели популярность, начались проблемы.
График ниже отображает количество ежедневных транзакций в сети Биткоина по годам:
А здесь можно помесячно посмотреть число транзакций в сети Эфириума за последние годы:
Выглядит впечатляюще, но изначально архитектура криптовалют не была рассчитана на широкое использование и внедрение. Пока транзакций было немного, всё работало нормально, но, как только криптовалюты обрели популярность, начались проблемы.
Проблема масштабируемости криптовалют
Для того чтобы Биткоин и Эфириум могли конкурировать с такими популярными системами, как 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 Мбайт.
В сообществе Эфириума также звучало предложение об увеличении размера блока, но по ряду причин людей такой вариант не устраивает.
Масштабируемость Эфириума в первую очередь ограничивается скоростью достижения консенсуса между нодами. Увеличение размера блока не решит эту проблему. Скорее, даже усугубит, так как из-за увеличения ёмкости блока каждая нода будет обрабатывать больше транзакций, то есть выполнять больше проверок и вычислений.
Число транзакций будет постепенно расти, и чтобы размещать их, придется периодически увеличивать размер блока. Это приведет к централизации системы, потому что обычные пользователи не смогут хранить на своих компьютерах настолько громоздкие блокчейны, а это уже противоречит концепции равноправия участников сети.
Чтобы увеличить размер блока, необходимо провести хардфорк, а это может разделить сообщество. Во время одного из важных хардфорков в сети Эфириума сообщество уже разделилось, и в результате появились две отдельные валюты. Люди не хотят, чтобы это повторилось.
Proof of stake
Переход Эфириума с протокола proof of work на proof of stake — это важное событие для всего криптомира.
Proof of work (PoW): этот протокол до сих пор применяется в сетях большинства криптовалют (в Эфириуме и Биткоине, например). При его использовании майнеры «добывают» криптовалюты, решая криптографические задачи с помощью специального оборудования.
Proof of stake (PoS): этот протокол делает весь процесс майнинга виртуальным. В такой системе майнеров заменяют валидаторы. Процесс выглядит так: сначала вам, как валидатору, нужно заблокировать некоторую часть принадлежащих ему эфиров в качестве доли. После этого вы сможете подтверждать блоки. Это значит, что, если вы нашли блок, который, по вашему мнению, следует включить в блокчейн, вы можете валидировать его, поставив на него свою долю. Когда и если этот блок будет добавлен в блокчейн, вы получите вознаграждение, пропорциональное той доле, которую вложили. Но если вы утвердили неверный или вредоносный блок, то потеряете свою долю.
Для перехода на PoS команда Эфириума будет использовать алгоритм консенсуса Casper. Вначале это будет гибридная система, где основная часть транзакций по-прежнему будет подтверждаться с использованием PoW, а каждая сотая транзакция – с помощью PoS. Это позволит в реальных условиях протестировать протокол PoS на платформе Эфириума. Но что это значит для Эфириума, и какие преимущества дает этот протокол? Давайте посмотрим.
Преимущества Proof of Stake
Снижение общих энергетических и денежных затрат: майнеры биткоинов со всего мира тратят на электричество примерно 50 000 $ в час. Это 1,2 млн долларов в день, 36 млн в месяц и около 450 млн долларов в год! Только задумайтесь об этих цифрах и объемах затрачиваемой энергии. Протокол PoS позволяет сделать весь процесс полностью виртуальным и сократить все эти расходы.
Отсутствие преимуществ у ASIC: так как весь процесс станет виртуальным, его результат не будет зависеть от того, у кого есть более мощное оборудование или ASIC (специализированные интегральные схемы).
Более надежная защита от атаки 51 %: эта атака представляет собой ситуацию, когда группа майнеров получает в свое распоряжение более 50 % всей вычислительной мощности сети. Протокол PoS не позволяет осуществить такую атаку.
Защита от недобросовестных действий со стороны майнеров (валидаторов): валидатор, который заблокировал свои средства в блокчейне, не станет включать в него неправильные или вредоносные блоки, потому что в таком случае он потеряет всю вложенную долю.
Создание блока: протокол ускоряет создание новых блоков и весь процесс в целом.
Масштабируемость: протокол обеспечивает масштабируемость блокчейна за счет применения концепции шардинга.
Как это решит проблему масштабируемости блокчейна?
Внедрение PoS позволит ускорить процесс добавления блоков в цепочку, так как легче проверить, у кого самая крупная доля, чем выяснить, кто обладает наибольшей вычислительной мощностью. Это упрощает достижение консенсуса. Кроме того, реализация блокчейна с PoS – это неотъемлемая часть Serenity, четвертой и окончательной версии Эфириума.
В то же время PoS упрощает реализацию шардинга. В системе с протоколом PoW злоумышленнику будет проще атаковать отдельные шарды, обладающие небольшой вычислительной мощностью.
Кроме того, майнеры в такой сети не будут получать вознаграждений за формирование блока. Они смогут зарабатывать только за счет комиссий. И поэтому они будут заинтересованы в увеличении размера блока, чтобы включать в него больше транзакций (за счет управления расходом газа).
Будущее протокола PoS
В тестовой сети запущен алгоритм Casper. После его внедрения каждый сотый блок будет добываться по протоколу PoS. Ёити Хирай (Yoichi Hirai) из Ethereum Foundation проверяет скрипты Casper с помощью математических детекторов ошибок.
Основная задача – перейти на создание блоков с помощью протокола PoS. Чтобы добиться этого, разработчики активируют бомбу сложности замедленного действия, которая будет усложнять майнинг в геометрической прогрессии. И тогда в сети Эфириума наступит так называемый «Ледниковый период». Невероятно высокая сложность майнинга значительно снизит скорость хеширования, что, в свою очередь, повлияет на скорость всей сети и скорость работы децентрализованных приложений на базе этого блокчейна. Это заставит всех участников сети Эфириума перейти на протокол PoS.
Но у такого перехода есть свои сложности. Больше всего люди опасаются, что майнеры проведут хардфорк до наступления Ледникового периода и будут работать с новой цепочкой. Это может стать катастрофой, потому что тогда у нас уже будет 3 разных цепочки Эфириума: Эфириум Классик, Эфириум Proof-of-Work и Эфириум Proof-of-Stake.
Пока все это лишь спекуляции. Сейчас важно то, что Эфириуму необходим протокол PoS, чтобы добиться той скорости и гибкости, которые требуются для его масштабирования.
Шардинг
Самая большая проблема для Эфириума — это низкая скорость подтверждения транзакций. Сейчас каждая полная нода в сети должна скачивать и хранить весь блокчейн. А шардинг представляет собой разделение транзакций на шарды и распределение их по сети. Ноды параллельно обрабатывают транзакции отдельных шардов. Это снижает общие затраты времени.
Представьте, что Эфириум разделен на тысячи островов. Каждый остров может выполнять собственную работу. У каждого острова есть уникальные свойства, и все его жители могут взаимодействовать друг с другом и свободно пользоваться этими свойствами. Для связи с другими островами они будут использовать некий протокол.
Вопрос в том, как в таком случае изменится блокчейн.
Как выглядит обычный блок в Биткоине или Эфириуме (до шардинга)?
Итак, блок состоит из заголовка и тела, которое содержит все транзакции. Корень всех транзакций находится в заголовке.
Теперь подумайте вот о чем.
Биткоину действительно были нужны блоки?
А был ли ему нужен блокчейн?
Сатоши мог просто создать цепочку транзакций, включая хеш предыдущей транзакции в более новую.
Он разместил эти транзакции в блоках, чтобы создать один уровень взаимодействия и добиться лучшей масштабируемости всего процесса. А разработчики Эфириума предлагают создать два уровня взаимодействия.
Первый уровень
Первый уровень — это группа транзакций. Каждый шард имеет собственную группу транзакций.
Источник: Hackernoon
Группа транзакций делится на заголовок и тело.
Заголовок группы транзакций
Заголовок делится на четко выраженные левую и правую части.
Левая часть
Shard ID: идентификатор шарда, которому принадлежит группа транзакций.
Pre state root (корень пред-состояния): это корень состояния шарда 43 перед включением транзакций.
Post state root (корень пост-состояния): это корень состояния шарда 43 после включения транзакций.
Receipt root: корень квитанций (receipt) после включения всех транзакций в шард 43.
Правая часть
Правая часть полностью состоит из валидаторов, которые проверяют транзакции в шарде. Они выбираются случайным образом.
Тело группы транзакций
Тело содержит все идентификаторы транзакций шарда.
Свойства первого уровня
Каждая транзакция включает идентификатор шарда, которому она принадлежит.
Транзакция, принадлежащая определенному шарду, указывает, что она осуществляется между двумя аккаунтами, которые относятся к тому же шарду.
Группа транзакций включает транзакции, которые закреплены только за определенным шардом, и они уникальны.
Указывает корень пред- и пост-состояния.
Теперь рассмотрим верхний или второй уровень.
Второй уровень
Источник: Hackernoon
Не пугайтесь! Выглядит сложно, но на самом деле все не так.
Это обычный блокчейн, но теперь он содержит два основных корня:
корень состояний;
корень группы транзакций.
Корень состояний представляет собой общее состояние. Оно, как мы видели ранее, делится на шарды, которые содержат собственные подсостояния.
Корень группы транзакций содержит все группы транзакций внутри блока.
Свойства второго уровня
Второй уровень напоминает простой блокчейн, который вместо транзакций принимает группы транзакций.
Группа транзакций считается верной, если: а) корень пред-состояния соответствует текущему корню состояния шарда,
и б) все подписи в группе транзакций проверены.
При включении группы транзакций корень текущего состояния шарда становится корнем пост-состояния.
Как же происходит взаимодействие между шардами?
Вспомните аналогию с островами.
В целом шарды на них похожи. Как эти острова взаимодействуют друг с другом? Как мы знаем, задача шардов — обеспечивать параллельную обработку множества транзакций и тем самым повышать производительность сети. Если взаимодействие между шардами будет происходить случайным образом, добиться этого не получится.
Так какой протокол нужен для взаимодействия между шардами?
Разработчики Эфириума решили использовать для таких взаимодействий квитанции (receipt). Взгляните:
Источник: Hackernoon
Как видите, к каждой отдельной квитанции любой транзакции можно легко получить доступ через деревья Меркла от корня группы транзакций. Каждая транзакция в шарде будет выполнять два действия:
менять состояние шарда, к которому она относится;
генерировать квитанцию.
А вот еще одна интересная деталь. Квитанции хранятся в распределенной общей памяти, которую другие шарды могут просматривать, но не изменять. Поэтому шарды могут взаимодействовать друг с другом посредством квитанций, например, так:
Источник: Hackernoon
В чем заключаются сложности реализации шардинга?
Необходим механизм, позволяющий узнать, какая нода за какой шард отвечает. Этот механизм должен быть безопасным и эффективным, чтобы обеспечить параллельную работу и защиту.
По мнению Влада Замфира (Vlad Zamfir), для реализации шардинга сначала необходимо перейти на протокол PoS. В системе PoW злоумышленникам будет проще атаковать шарды с меньшей вычислительной мощностью.
Ноды работают в системе, где доверие исключено, то есть нода A не верит ноде Б, но, несмотря на это, они должны прийти к консенсусу. Поэтому, если какая-либо группа транзакций разбивается и распределяется между нодами А и Б, необходим некий механизм доказательства, который позволит подтвердить, что ноды завершили обработку своей части шарда.
Офчейн-каналы состояния
Что такое канал состояния?
Канал состояния — это канал двусторонней связи между участниками, который позволяет им взаимодействовать вне блокчейна. Это значительно снижает время проведения транзакции, так как пользователь не зависит от третьих лиц – например, майнеров – в процессе проверки своей транзакции.
Что необходимо для создания офчейн-канала состояния?
Часть состояния блокчейна нужно заблокировать с помощью мультиподписи или какого-либо смарт-контракта, который согласован рядом участников.
Они взаимодействуют друг с другом: подписывают транзакции между собой и не отправляют ничего майнерам.
Затем весь набор транзакций вносится в блокчейн.
По словам основателя Slock.it Стефана Туаля (Stephan Thual), каналы состояния можно закрыть в соответствии с условиями, которые заранее определены участниками. Например:
через некоторый промежуток времени: участники могут открыть канал состояния и закрыть его спустя 2 часа;
на основе общей суммы транзакций: участники могут закрыть канал, когда сумма всех транзакций достигнет, скажем, 100 $.
Источник: статья Стефана Туаля в Medium
Взгляните на картинку выше. У нас есть машина, которая напрямую взаимодействует с зарядной станцией и совершает транзакции общей стоимостью 39,19 долларов. После ряда взаимодействий весь набор транзакций добавляется в блокчейн. Представьте, сколько бы времени потребовалось, если бы пришлось добавлять в блокчейн каждую транзакцию по отдельности!
В Биткоине планируют реализовать свой аналог офчейн-канала состояния. Это Lightning Network.
Что такое Lightning Network?
Lightning Network — это офчейн-система микроплатежей, которая позволяет ускорить проведение транзакций. Джозеф Пун (Joseph Poo) и Тадж Драйя (Tadge Dryja) описали эту концепцию в своей «белой книге». Lightning Network работает поверх Биткоина. Ее часто называют вторым уровнем. Джимми Сонг (Jimmy Song) отметил в своей статье:
«Lightning Network позволяет создавать транзакции с двусторонней подписью. То есть мы получаем новую квитанцию, для подтверждения которой требуется подпись обеих сторон. В квитанции указывается, сколько средств одна сторона отправила другой. При совершении новых микроплатежей сумма в квитанции меняется, и стороны снова подписывают результат».
Эта сеть позволит Алисе и Бобу взаимодействовать друг с другом и не зависеть от третьей стороны – от майнеров. Для того чтобы воспользоваться таким каналом, транзакцию должны подписать оба участника, прежде чем она попадет в сеть. Двусторонняя подпись критически важна для осуществления транзакции.
Но здесь возникает проблема.
В ходе двойной проверки рассматривается идентификатор транзакции. Если по какой-либо причине он изменится, в системе возникнет ошибка, и Lightning Network не активируется. Если вы не знаете, что такое идентификатор транзакции, то я поясню: это имя транзакции или ее хеш.
Ошибка, называемая «пластичностью транзакции», может привести к изменению идентификатора. Но активация SegWit устраняет эту проблему.
Разработчики Эфириума тоже планируют активировать аналог Lightning Network, который называется Raiden.
Plasma
Plasma вместе с Lightning Network/Raiden введет в архитектуру Эфириума целый новый уровень:
Источник: Medium
Plasma — это ряд контрактов, которые работают поверх корневой цепочки (основного блокчейна Эфириума). Чтобы понять общую архитектуру и структуру такой системы, представьте основной блокчейн и цепочки Plasma в виде дерева. Основной блокчейн – это корень, а цепочки Plasma, или дочерние блокчейны, это ветви.
Такая архитектура значительно снижает нагрузку на основной блокчейн. Периодически ветви отправляют в корень отчеты. На самом деле, корневую цепочку можно рассматривать как верховный суд, а все ветви, как нижестоящие суды, которые получают власть от верховного.
Все цепочки-ветви могут выпускать собственные уникальные токены для стимулирования валидаторов, чтобы они защищали их и гарантировали им корректную работу. Каждая ветвь имеет собственную независимую базу данных. Когда приходит время для отправки каких-либо данных в основную цепочку, она передает только хеш заголовка блока.
Plasma не только сберегает пространство в основной цепочке, но и значительно ускоряет проведение транзакций. При должной реализации Plasma может стать самым революционным новшеством для Эфириума и мира криптовалют за всю их историю.
Перспективы
Криптовалюты – и в особенности Биткоин и Эфириум – становятся все более популярными. Чтобы удовлетворить растущий спрос, разработчикам необходимо серьезно подойти к вопросу масштабируемости. К счастью, уже есть несколько отличных решений, которые дают интересные результаты. Смогут ли они решить проблему? Время покажет.
https://cryptocurrency.tech/ (C)
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку - выделить и нажать Ctrl+Enter | Отправить жалобу
График ниже отображает количество ежедневных транзакций в сети Биткоина по годам:
А здесь можно помесячно посмотреть число транзакций в сети Эфириума за последние годы:
Выглядит впечатляюще, но изначально архитектура криптовалют не была рассчитана на широкое использование и внедрение. Пока транзакций было немного, всё работало нормально, но, как только криптовалюты обрели популярность, начались проблемы.
Проблема масштабируемости криптовалют
Для того чтобы Биткоин и Эфириум могли конкурировать с такими популярными системами, как 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 Мбайт.
В сообществе Эфириума также звучало предложение об увеличении размера блока, но по ряду причин людей такой вариант не устраивает.
Масштабируемость Эфириума в первую очередь ограничивается скоростью достижения консенсуса между нодами. Увеличение размера блока не решит эту проблему. Скорее, даже усугубит, так как из-за увеличения ёмкости блока каждая нода будет обрабатывать больше транзакций, то есть выполнять больше проверок и вычислений.
Число транзакций будет постепенно расти, и чтобы размещать их, придется периодически увеличивать размер блока. Это приведет к централизации системы, потому что обычные пользователи не смогут хранить на своих компьютерах настолько громоздкие блокчейны, а это уже противоречит концепции равноправия участников сети.
Чтобы увеличить размер блока, необходимо провести хардфорк, а это может разделить сообщество. Во время одного из важных хардфорков в сети Эфириума сообщество уже разделилось, и в результате появились две отдельные валюты. Люди не хотят, чтобы это повторилось.
Proof of stake
Переход Эфириума с протокола proof of work на proof of stake — это важное событие для всего криптомира.
Proof of work (PoW): этот протокол до сих пор применяется в сетях большинства криптовалют (в Эфириуме и Биткоине, например). При его использовании майнеры «добывают» криптовалюты, решая криптографические задачи с помощью специального оборудования.
Proof of stake (PoS): этот протокол делает весь процесс майнинга виртуальным. В такой системе майнеров заменяют валидаторы. Процесс выглядит так: сначала вам, как валидатору, нужно заблокировать некоторую часть принадлежащих ему эфиров в качестве доли. После этого вы сможете подтверждать блоки. Это значит, что, если вы нашли блок, который, по вашему мнению, следует включить в блокчейн, вы можете валидировать его, поставив на него свою долю. Когда и если этот блок будет добавлен в блокчейн, вы получите вознаграждение, пропорциональное той доле, которую вложили. Но если вы утвердили неверный или вредоносный блок, то потеряете свою долю.
Для перехода на PoS команда Эфириума будет использовать алгоритм консенсуса Casper. Вначале это будет гибридная система, где основная часть транзакций по-прежнему будет подтверждаться с использованием PoW, а каждая сотая транзакция – с помощью PoS. Это позволит в реальных условиях протестировать протокол PoS на платформе Эфириума. Но что это значит для Эфириума, и какие преимущества дает этот протокол? Давайте посмотрим.
Преимущества Proof of Stake
Снижение общих энергетических и денежных затрат: майнеры биткоинов со всего мира тратят на электричество примерно 50 000 $ в час. Это 1,2 млн долларов в день, 36 млн в месяц и около 450 млн долларов в год! Только задумайтесь об этих цифрах и объемах затрачиваемой энергии. Протокол PoS позволяет сделать весь процесс полностью виртуальным и сократить все эти расходы.
Отсутствие преимуществ у ASIC: так как весь процесс станет виртуальным, его результат не будет зависеть от того, у кого есть более мощное оборудование или ASIC (специализированные интегральные схемы).
Более надежная защита от атаки 51 %: эта атака представляет собой ситуацию, когда группа майнеров получает в свое распоряжение более 50 % всей вычислительной мощности сети. Протокол PoS не позволяет осуществить такую атаку.
Защита от недобросовестных действий со стороны майнеров (валидаторов): валидатор, который заблокировал свои средства в блокчейне, не станет включать в него неправильные или вредоносные блоки, потому что в таком случае он потеряет всю вложенную долю.
Создание блока: протокол ускоряет создание новых блоков и весь процесс в целом.
Масштабируемость: протокол обеспечивает масштабируемость блокчейна за счет применения концепции шардинга.
Как это решит проблему масштабируемости блокчейна?
Внедрение PoS позволит ускорить процесс добавления блоков в цепочку, так как легче проверить, у кого самая крупная доля, чем выяснить, кто обладает наибольшей вычислительной мощностью. Это упрощает достижение консенсуса. Кроме того, реализация блокчейна с PoS – это неотъемлемая часть Serenity, четвертой и окончательной версии Эфириума.
В то же время PoS упрощает реализацию шардинга. В системе с протоколом PoW злоумышленнику будет проще атаковать отдельные шарды, обладающие небольшой вычислительной мощностью.
Кроме того, майнеры в такой сети не будут получать вознаграждений за формирование блока. Они смогут зарабатывать только за счет комиссий. И поэтому они будут заинтересованы в увеличении размера блока, чтобы включать в него больше транзакций (за счет управления расходом газа).
Будущее протокола PoS
В тестовой сети запущен алгоритм Casper. После его внедрения каждый сотый блок будет добываться по протоколу PoS. Ёити Хирай (Yoichi Hirai) из Ethereum Foundation проверяет скрипты Casper с помощью математических детекторов ошибок.
Основная задача – перейти на создание блоков с помощью протокола PoS. Чтобы добиться этого, разработчики активируют бомбу сложности замедленного действия, которая будет усложнять майнинг в геометрической прогрессии. И тогда в сети Эфириума наступит так называемый «Ледниковый период». Невероятно высокая сложность майнинга значительно снизит скорость хеширования, что, в свою очередь, повлияет на скорость всей сети и скорость работы децентрализованных приложений на базе этого блокчейна. Это заставит всех участников сети Эфириума перейти на протокол PoS.
Но у такого перехода есть свои сложности. Больше всего люди опасаются, что майнеры проведут хардфорк до наступления Ледникового периода и будут работать с новой цепочкой. Это может стать катастрофой, потому что тогда у нас уже будет 3 разных цепочки Эфириума: Эфириум Классик, Эфириум Proof-of-Work и Эфириум Proof-of-Stake.
Пока все это лишь спекуляции. Сейчас важно то, что Эфириуму необходим протокол PoS, чтобы добиться той скорости и гибкости, которые требуются для его масштабирования.
Шардинг
Самая большая проблема для Эфириума — это низкая скорость подтверждения транзакций. Сейчас каждая полная нода в сети должна скачивать и хранить весь блокчейн. А шардинг представляет собой разделение транзакций на шарды и распределение их по сети. Ноды параллельно обрабатывают транзакции отдельных шардов. Это снижает общие затраты времени.
Представьте, что Эфириум разделен на тысячи островов. Каждый остров может выполнять собственную работу. У каждого острова есть уникальные свойства, и все его жители могут взаимодействовать друг с другом и свободно пользоваться этими свойствами. Для связи с другими островами они будут использовать некий протокол.
Вопрос в том, как в таком случае изменится блокчейн.
Как выглядит обычный блок в Биткоине или Эфириуме (до шардинга)?
Итак, блок состоит из заголовка и тела, которое содержит все транзакции. Корень всех транзакций находится в заголовке.
Теперь подумайте вот о чем.
Биткоину действительно были нужны блоки?
А был ли ему нужен блокчейн?
Сатоши мог просто создать цепочку транзакций, включая хеш предыдущей транзакции в более новую.
Он разместил эти транзакции в блоках, чтобы создать один уровень взаимодействия и добиться лучшей масштабируемости всего процесса. А разработчики Эфириума предлагают создать два уровня взаимодействия.
Первый уровень
Первый уровень — это группа транзакций. Каждый шард имеет собственную группу транзакций.
Источник: Hackernoon
Группа транзакций делится на заголовок и тело.
Заголовок группы транзакций
Заголовок делится на четко выраженные левую и правую части.
Левая часть
Shard ID: идентификатор шарда, которому принадлежит группа транзакций.
Pre state root (корень пред-состояния): это корень состояния шарда 43 перед включением транзакций.
Post state root (корень пост-состояния): это корень состояния шарда 43 после включения транзакций.
Receipt root: корень квитанций (receipt) после включения всех транзакций в шард 43.
Правая часть
Правая часть полностью состоит из валидаторов, которые проверяют транзакции в шарде. Они выбираются случайным образом.
Тело группы транзакций
Тело содержит все идентификаторы транзакций шарда.
Свойства первого уровня
Каждая транзакция включает идентификатор шарда, которому она принадлежит.
Транзакция, принадлежащая определенному шарду, указывает, что она осуществляется между двумя аккаунтами, которые относятся к тому же шарду.
Группа транзакций включает транзакции, которые закреплены только за определенным шардом, и они уникальны.
Указывает корень пред- и пост-состояния.
Теперь рассмотрим верхний или второй уровень.
Второй уровень
Источник: Hackernoon
Не пугайтесь! Выглядит сложно, но на самом деле все не так.
Это обычный блокчейн, но теперь он содержит два основных корня:
корень состояний;
корень группы транзакций.
Корень состояний представляет собой общее состояние. Оно, как мы видели ранее, делится на шарды, которые содержат собственные подсостояния.
Корень группы транзакций содержит все группы транзакций внутри блока.
Свойства второго уровня
Второй уровень напоминает простой блокчейн, который вместо транзакций принимает группы транзакций.
Группа транзакций считается верной, если: а) корень пред-состояния соответствует текущему корню состояния шарда,
и б) все подписи в группе транзакций проверены.
При включении группы транзакций корень текущего состояния шарда становится корнем пост-состояния.
Как же происходит взаимодействие между шардами?
Вспомните аналогию с островами.
В целом шарды на них похожи. Как эти острова взаимодействуют друг с другом? Как мы знаем, задача шардов — обеспечивать параллельную обработку множества транзакций и тем самым повышать производительность сети. Если взаимодействие между шардами будет происходить случайным образом, добиться этого не получится.
Так какой протокол нужен для взаимодействия между шардами?
Разработчики Эфириума решили использовать для таких взаимодействий квитанции (receipt). Взгляните:
Источник: Hackernoon
Как видите, к каждой отдельной квитанции любой транзакции можно легко получить доступ через деревья Меркла от корня группы транзакций. Каждая транзакция в шарде будет выполнять два действия:
менять состояние шарда, к которому она относится;
генерировать квитанцию.
А вот еще одна интересная деталь. Квитанции хранятся в распределенной общей памяти, которую другие шарды могут просматривать, но не изменять. Поэтому шарды могут взаимодействовать друг с другом посредством квитанций, например, так:
Источник: Hackernoon
В чем заключаются сложности реализации шардинга?
Необходим механизм, позволяющий узнать, какая нода за какой шард отвечает. Этот механизм должен быть безопасным и эффективным, чтобы обеспечить параллельную работу и защиту.
По мнению Влада Замфира (Vlad Zamfir), для реализации шардинга сначала необходимо перейти на протокол PoS. В системе PoW злоумышленникам будет проще атаковать шарды с меньшей вычислительной мощностью.
Ноды работают в системе, где доверие исключено, то есть нода A не верит ноде Б, но, несмотря на это, они должны прийти к консенсусу. Поэтому, если какая-либо группа транзакций разбивается и распределяется между нодами А и Б, необходим некий механизм доказательства, который позволит подтвердить, что ноды завершили обработку своей части шарда.
Офчейн-каналы состояния
Что такое канал состояния?
Канал состояния — это канал двусторонней связи между участниками, который позволяет им взаимодействовать вне блокчейна. Это значительно снижает время проведения транзакции, так как пользователь не зависит от третьих лиц – например, майнеров – в процессе проверки своей транзакции.
Что необходимо для создания офчейн-канала состояния?
Часть состояния блокчейна нужно заблокировать с помощью мультиподписи или какого-либо смарт-контракта, который согласован рядом участников.
Они взаимодействуют друг с другом: подписывают транзакции между собой и не отправляют ничего майнерам.
Затем весь набор транзакций вносится в блокчейн.
По словам основателя Slock.it Стефана Туаля (Stephan Thual), каналы состояния можно закрыть в соответствии с условиями, которые заранее определены участниками. Например:
через некоторый промежуток времени: участники могут открыть канал состояния и закрыть его спустя 2 часа;
на основе общей суммы транзакций: участники могут закрыть канал, когда сумма всех транзакций достигнет, скажем, 100 $.
Источник: статья Стефана Туаля в Medium
Взгляните на картинку выше. У нас есть машина, которая напрямую взаимодействует с зарядной станцией и совершает транзакции общей стоимостью 39,19 долларов. После ряда взаимодействий весь набор транзакций добавляется в блокчейн. Представьте, сколько бы времени потребовалось, если бы пришлось добавлять в блокчейн каждую транзакцию по отдельности!
В Биткоине планируют реализовать свой аналог офчейн-канала состояния. Это Lightning Network.
Что такое Lightning Network?
Lightning Network — это офчейн-система микроплатежей, которая позволяет ускорить проведение транзакций. Джозеф Пун (Joseph Poo) и Тадж Драйя (Tadge Dryja) описали эту концепцию в своей «белой книге». Lightning Network работает поверх Биткоина. Ее часто называют вторым уровнем. Джимми Сонг (Jimmy Song) отметил в своей статье:
«Lightning Network позволяет создавать транзакции с двусторонней подписью. То есть мы получаем новую квитанцию, для подтверждения которой требуется подпись обеих сторон. В квитанции указывается, сколько средств одна сторона отправила другой. При совершении новых микроплатежей сумма в квитанции меняется, и стороны снова подписывают результат».
Эта сеть позволит Алисе и Бобу взаимодействовать друг с другом и не зависеть от третьей стороны – от майнеров. Для того чтобы воспользоваться таким каналом, транзакцию должны подписать оба участника, прежде чем она попадет в сеть. Двусторонняя подпись критически важна для осуществления транзакции.
Но здесь возникает проблема.
В ходе двойной проверки рассматривается идентификатор транзакции. Если по какой-либо причине он изменится, в системе возникнет ошибка, и Lightning Network не активируется. Если вы не знаете, что такое идентификатор транзакции, то я поясню: это имя транзакции или ее хеш.
Ошибка, называемая «пластичностью транзакции», может привести к изменению идентификатора. Но активация SegWit устраняет эту проблему.
Разработчики Эфириума тоже планируют активировать аналог Lightning Network, который называется Raiden.
Plasma
Plasma вместе с Lightning Network/Raiden введет в архитектуру Эфириума целый новый уровень:
Источник: Medium
Plasma — это ряд контрактов, которые работают поверх корневой цепочки (основного блокчейна Эфириума). Чтобы понять общую архитектуру и структуру такой системы, представьте основной блокчейн и цепочки Plasma в виде дерева. Основной блокчейн – это корень, а цепочки Plasma, или дочерние блокчейны, это ветви.
Такая архитектура значительно снижает нагрузку на основной блокчейн. Периодически ветви отправляют в корень отчеты. На самом деле, корневую цепочку можно рассматривать как верховный суд, а все ветви, как нижестоящие суды, которые получают власть от верховного.
Все цепочки-ветви могут выпускать собственные уникальные токены для стимулирования валидаторов, чтобы они защищали их и гарантировали им корректную работу. Каждая ветвь имеет собственную независимую базу данных. Когда приходит время для отправки каких-либо данных в основную цепочку, она передает только хеш заголовка блока.
Plasma не только сберегает пространство в основной цепочке, но и значительно ускоряет проведение транзакций. При должной реализации Plasma может стать самым революционным новшеством для Эфириума и мира криптовалют за всю их историю.
Перспективы
Криптовалюты – и в особенности Биткоин и Эфириум – становятся все более популярными. Чтобы удовлетворить растущий спрос, разработчикам необходимо серьезно подойти к вопросу масштабируемости. К счастью, уже есть несколько отличных решений, которые дают интересные результаты. Смогут ли они решить проблему? Время покажет.
https://cryptocurrency.tech/ (C)
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку - выделить и нажать Ctrl+Enter | Отправить жалобу