Масштабируемость блокчейнов (Часть 2)
Криптовалюты привлекают к себе все больше внимания. Взгляните на темпы роста популярности Биткоина и Эфириума. Изначально архитектура криптовалют не была рассчитана на широкое использование и внедрение. Пока транзакций было немного, всё работало нормально, но, как только криптовалюты обрели популярность, начались проблемы.
(Первая часть статьи)
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 может стать самым революционным новшеством для Эфириума и мира криптовалют за всю их историю.
Перспективы
Криптовалюты – и в особенности Биткоин и Эфириум – становятся все более популярными. Чтобы удовлетворить растущий спрос, разработчикам необходимо серьезно подойти к вопросу масштабируемости. К счастью, уже есть несколько отличных решений, которые дают интересные результаты. Смогут ли они решить проблему? Время покажет.
Источник: cryptocurrency.tech