Layer 2 Overview
Эльшан Джафаров, Blockchain Engineer из Fluence Lab, во время The Scaling Meetup в Тбилиси рассказал про Layer 2 решения для масштабируемости блокчейна. Какие изменения произошли в индустрии за последнее время, и какие сейчас есть решения на рынке. Приятного чтения!
Sharding - идея, которая должна спасти Ethereum. Ее суть заключается в разделении вычислений на отдельные цепочки и агрегации их в главной цепочке. В настоящее время все вычисления выполняются последовательно в основной цепочке блокчейна, но шардинг позволяет разделить их на разные цепочки и настроить между ними коммутационный протокол. Однако у шардинга есть несколько проблем, таких как неопределенность доступности данных каждого шарда (data visibility) и необходимость изменения протокола Layer 1.
Ethereum Foundation отказалась от идеи реализации шардинга, и в конце доклада мы узнаем, на что они поменяли свой план.

Sidechains
Когда блокчейн впервые столкнулся с проблемой масштабирования, вся надежда была на Sidechains.
Sidechains представляют собой отдельную автономную цепочку с ее собственным набором валидаторов, консенсусом и возможностью обмена стейтом, токенами или другой информацией с основной цепочкой через бридж. Однако у данного решения есть одна проблема: для создания sidechain необходимо создать новую безопасную сеть со своими собственными валидаторами с нуля.

Принцип работы sidechains состоит в том, что для доступа к ним сначала необходимо заблокировать токены на L1, а затем произвести минтинг на sidechain. Чтобы выйти из sidechain, токены должны быть сожжены на sidechain, и после этого они возвращаются в L1, и смарт-контракт разблокируется.

Plasma
Когда стало очевидно, что Sidechain - хорошее решение, но оно трудно масштабируется, было предложено использовать Plasma.
Plasma предполагает баланс между автономностью цепочки и проверкой на L1. У Plasma есть операторы, которые ведут цепочку в самой Plasma, и ее можно вложить в другую Plasma Chain. Когда пользователь хочет выйти из Plasma Chain, он должен предоставить доказательство в L1 в виде Merkle Root стейта, и другие участники сети имеют 7-14 дней, чтобы предоставить доказательство о невалидности.
Plasma - это Optimistic подход, предполагающий, что стейт валиден, но есть период, когда мы можем предоставить доказательство о невалидности. Однако у такого решения есть проблема - data availability. Оператор может скрывать блоки, в которых находятся доказательства, что стейт невалиден. Из-за этого в Plasma нельзя использовать виртуальную машину, хотя реализация Plasma с токенами все-таки существует.

State channels
Параллельно Plasma в блокчейне развивались State channels. Пример проекта с таким решением - Lighting Network.
Принцип работы State channels заключается в создании канала между n-ым количеством участников. Канал представляет собой multisig смарт-контракт, который требует подтверждения всех участников для записи в него информации. После создания канала мы можем обновлять его стейт, подписывая его всеми сторонами, и последний подписанный стейт будет считаться валидным для этого канала. После того как мы провайдим канал в чейн, мы его закрываем. Однако, у State channels есть проблема - чтобы канал работал, все участники должны обязательно быть в сети.

State channels отлично подходят для быстрых микроплатежей. Так как канал создается между двумя участниками сети - появляется межсетевая связь, которая позволяет множеству участников быть связанными друг с другом через небольшие каналы. Таким образом, мы сможем передавать токены через несколько "прыжков" канала вперед.
Допустим, Алиса хочет передать токены Еве. Она может отправить их в канал, который у нее есть с Бобом. Если у Боба есть канал с Евой, то после получения токенов от Алисы, он сможет передать их Еве в своем канале.

Rollups
Спустя время, пришло понимание, что все вышеперечисленные решения не подходят для идеальной масштабируемости, и были придуманы Rollups.
Идея L2 состоит в том, чтобы опираться не на безопасность какого-то параллельного чейна, который мы создаем, а на безопасность самого L1. Rollups позволяют сжимать пакеты транзакций по определенному механизму и затем класть их в L1. На L1 эти транзакции не валидируются, они валидируются только в том случае, если пользователь хочет выйти из Rollup, для чего ему необходимо отправить заявку в L1. Дальше есть два варианта:
-
Если это Optimistic Rollups, то на это отводится 7-14 дней, чтобы запровайдить proof того, что этот стейт невалидны.
-
Eсли это zkRollups, то пользователь может моментально вывести токены из Rollup в L1.
Несмотря на то, что Rollups чем-то похожи на Plasma, они могут иметь собственную виртуальную машину. У Rollups нет проблемы data availability, то есть не нужно иметь отдельную ноду для Rollup, чтобы воссоздать абстрактный чейн. Для этого достаточно прочитать данные L1, и исходя из транзакций в нем мы можем построить Rollup с нуля, не нужен будет никакой валидатор, и нет узла, который может скрывать эти данные.

Summarize
Более полное представление о масштабируемости, можно увидеть на данной схеме, где объединены все вышеперечисленные решения.

Рассмотрим каждое из них более подробно:
-
Sidechains: это решение имеет разное время выхода, но не защищено консенсусом L1, поэтому необходимо строить его с нуля.
-
Plasma: это решение имеет проблемы с таймаутом на выход, доступностью данных и лишь частично защищено консенсусом L1.
-
State channels: это решение позволяет осуществлять почти мгновенный выход, но его время жизни ограничено, количество участников также ограничено, и каждый из них должен быть в сети.
-
Optimistic Rollups: это решение относительно просто в реализации, но у него есть таймаут на выход, что не позволяет создавать сеть ролапов, которые будут общаться через L1 быстрыми сообщениями.
-
zkRollups: это решение очень сложно в реализации, требует уверенности в proofs, которые мы провайдим, и будет иметь более высокую комиссию, чем Optimistic Rollups.

Danksharding
Как известно, Ethereum Foundation отказалась от идеи реализации Sharding, поскольку Rollups смогли доказать свою эффективность и обеспечить высокую масштабируемость.
Вместо этого предлагается следующая концепция: есть L1 и множество ролапов, которые быстро синхронизируются и обмениваются информацией между собой. Так как обновления Sharding не предвидится, для улучшения доступности и удобства использования ролапов была предложена идея Danksharding. Ее суть заключается в шардинге временной даты вместо вычислительных операций. Эти данные будут храниться на определенных нодах, имеющих определенный консенсус и алгоритмы проверки их доступности. Однако эти данные не будут бессрочными, и Danksharding будет использоваться в качестве более дешевого решения, куда Rollup может записывать свои данные, чтобы эффективно функционировать. В настоящее время Rollup записывает свои данные в calldata, что не является оптимальным решением, поскольку записанные данные в блокчейне Ethereum остаются там навсегда.

Rollups Market
На момент написания этой статьи, мы видим, что Arbitrum - это Optimistic Rollup и несмотря на выход из ролапа в 7 дней, занимает лидирующие место по TVL среди всех L2 Solutions и является одним из самых стабильных.
Optimism - также будучи Optimistic Rollup, является менее стабильным, но занимает относительно большую часть TVL и располагается на втором месте.
Также, совсем недавно в майнет вышел проект zkSync Era - который построен на технологии zkRollups и позволяет моментально выходить из ролапа. Есть надежда, что именно zkRollups станут идеальным решением и позволят Ethereum масштабироваться тысячами ролапов вокруг него.

