Перейти к основному контенту
Change page

Цепи Плазмы

Цепь Плазмы — это отдельный блокчейн, привязанный к основной сети Ethereum, но выполняющий транзакции офчейн с собственным механизмом для валидации блока. Цепи Плазмы иногда называют «дочерними» цепями (child chains), по сути это уменьшенные копии основной сети Ethereum. Цепи Плазмы используют (как и оптимистичные роллапы) для разрешения споров.

Деревья Меркла позволяют создавать бесконечный стек таких цепей, которые могут работать для разгрузки пропускной способности родительских цепей (включая основную сеть Ethereum). Однако, хотя эти цепи получают часть безопасности от Эфириума (через доказательства мошенничества), их безопасность и эффективность подвержены ряду проектных ограничений.

Предварительные требования

У вас должно быть хорошее понимание всех базовых тем и высокоуровневое понимание масштабирования Эфириума.

Что такое Плазма?

Плазма — это фреймворк для улучшения масштабируемости в публичных блокчейнах, таких как Эфириум. Как описано в оригинальной белой книге Плазмы (открывается в новой вкладке), цепи Плазмы строятся поверх другого блокчейна (называемого «корневой цепью»). Каждая «дочерняя цепь» ответвляется от корневой цепи и, как правило, управляется смарт-контрактом, развернутым в родительской цепи.

Контракт Плазмы выполняет, среди прочего, функцию моста, позволяя пользователям перемещать активы между основной сетью Ethereum и цепью Плазмы. Хотя это делает их похожими на сайдчейны, цепи Плазмы получают выгоду (по крайней мере, в некоторой степени) от безопасности основной сети Ethereum. Этим они отличаются от сайдчейнов, которые несут единоличную ответственность за свою безопасность.

Как работает Плазма?

Основные компоненты фреймворка Плазмы:

Вычисления офчейн

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

Хотя механизм консенсуса Эфириума необходим для безопасности, он применим не к каждому сценарию использования. Например, Алисе может не понадобиться, чтобы вся сеть Эфириума проверяла её ежедневные платежи Бобу за чашку кофе, поскольку между обеими сторонами существует определенное доверие.

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

Вычисления офчейн необходимы, поскольку цепи Плазмы могут быть оптимизированы по скорости и стоимости. Например, цепь Плазмы может использовать — и чаще всего использует — одного «оператора» для управления упорядочиванием и выполнением транзакций. Если транзакции проверяет только одна сущность, время обработки в цепи Плазмы меньше, чем в основной сети Ethereum.

Коммитменты состояния

Хотя Плазма выполняет транзакции офчейн, они рассчитываются на главном уровне исполнения Эфириума, иначе цепи Плазмы не смогут воспользоваться гарантиями безопасности Эфириума. Но финализация офчейн-транзакций без знания состояния цепи Плазмы нарушила бы модель безопасности и привела к распространению недействительных транзакций. Именно поэтому оператор, сущность, ответственная за создание блоков в цепи Плазмы, обязан периодически публиковать «коммитменты состояния» в Эфириуме.

Схема коммитмента (открывается в новой вкладке) — это криптографический метод фиксации значения или утверждения без его раскрытия другой стороне. Коммитменты являются «связывающими» в том смысле, что вы не можете изменить значение или утверждение после того, как зафиксировали его. Коммитменты состояния в Плазме принимают форму «корней Меркла» (полученных из дерева Меркла), которые оператор через определенные промежутки времени отправляет в смарт-контракт Плазмы в цепи Эфириума.

Корни Меркла — это криптографические примитивы, которые позволяют сжимать большие объемы информации. Корень Меркла (в данном случае также называемый «корнем блока») может представлять все транзакции в блоке. Корни Меркла также упрощают проверку того, что небольшой фрагмент данных является частью большего набора данных. Например, пользователь может создать доказательство Меркла, чтобы доказать включение транзакции в определенный блок.

Корни Меркла важны для предоставления информации о состоянии офчейн в Эфириум. Вы можете думать о корнях Меркла как о «точках сохранения»: оператор говорит: «Это состояние цепи Плазмы в момент времени x, а это корень Меркла в качестве доказательства». Оператор фиксирует текущее состояние цепи Плазмы с помощью корня Меркла, поэтому это и называется «коммитментом состояния».

Входы и выходы

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

Плазма использует мастер-контракт, работающий в Эфириуме, для обработки входов и выходов пользователей. Этот мастер-контракт также отвечает за отслеживание коммитментов состояния (описанных ранее) и наказание за недобросовестное поведение с помощью доказательств мошенничества (подробнее об этом позже).

Вход в цепь Плазмы

Чтобы войти в цепь Плазмы, Алисе (пользователю) придется внести ETH или любой токен ERC-20 на смарт-контракт Плазмы. Оператор Плазмы, который следит за депозитами контракта, воссоздает сумму, равную первоначальному депозиту Алисы, и переводит ее на ее адрес в цепи Плазмы. От Алисы требуется подтвердить получение средств в дочерней цепи, после чего она может использовать эти средства для транзакций.

Выход из цепи Плазмы

Выход из цепи Плазмы сложнее входа по нескольким причинам. Самая главная причина заключается в том, что, хотя в Эфириуме есть информация о состоянии цепи Плазмы, он не может проверить, верна ли эта информация или нет. Злонамеренный пользователь может сделать неверное утверждение («У меня 1000 ETH»), и ему может сойти с рук предоставление поддельных доказательств в поддержку этого заявления.

Для предотвращения мошеннических выводов вводится «период оспаривания» (challenge period). В течение периода оспаривания (обычно это неделя) любой может оспорить запрос на вывод с помощью доказательства мошенничества. Если оспаривание проходит успешно, запрос на вывод отклоняется.

Тем не менее, чаще всего пользователи честны и делают правильные заявления о средствах, которыми они владеют. В этом сценарии Алиса инициирует запрос на вывод в корневой цепи (Эфириуме), отправив транзакцию в контракт Плазмы.

Она также должна предоставить доказательство Меркла, подтверждающее, что транзакция, создавшая ее средства в цепи Плазмы, была включена в блок. Это необходимо для итераций Плазмы, таких как Plasma MVP, которые используют модель неизрасходованных выходов транзакций (UTXO) (открывается в новой вкладке).

Другие, такие как Plasma Cash, представляют средства как невзаимозаменяемые токены вместо UTXO. Вывод средств в этом случае требует доказательства владения токенами в цепи Плазмы. Это делается путем предоставления двух последних транзакций с участием токена и доказательства Меркла, подтверждающего включение этих транзакций в блок.

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

Если период оспаривания истекает без предоставления доказательств мошенничества, запрос Алисы на вывод считается действительным, что позволяет ей вернуть депозиты из контракта Плазмы в Эфириуме.

Разрешение споров

Как и любому блокчейну, цепям Плазмы необходим механизм для обеспечения целостности транзакций на случай злонамеренных действий участников (например, двойная трата средств). Для этого цепи Плазмы используют доказательства мошенничества, чтобы разрешать споры относительно действительности переходов состояния и наказывать за недобросовестное поведение. Доказательства мошенничества используются в качестве механизма, с помощью которого дочерняя цепь Плазмы подает жалобу в свою родительскую или корневую цепь.

Доказательство мошенничества — это просто заявление о том, что определенный переход состояния недействителен. Примером может служить попытка пользователя (Алисы) потратить одни и те же средства дважды. Возможно, она потратила UTXO в транзакции с Бобом и хочет потратить тот же UTXO (который теперь принадлежит Бобу) в другой транзакции.

Чтобы предотвратить этот вывод, Боб создаст доказательство мошенничества, предоставив свидетельство того, что Алиса потратила указанный UTXO в предыдущей транзакции, и доказательство Меркла о включении транзакции в блок. Тот же процесс работает и в Plasma Cash: Бобу нужно будет предоставить доказательства того, что Алиса ранее перевела токены, которые она пытается вывести.

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

Проблема массового выхода в Плазме

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

Доступность данных — это способность проверить, что информация о предложенном блоке действительно была опубликована в блокчейн-сети. Блок считается «недоступным», если его создатель публикует сам блок, но утаивает данные, использованные для его создания.

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

Доступность данных (DA) также помогает обеспечить безопасность протоколов масштабирования офчейн, которые строятся на базовом уровне Эфириума. Принуждая операторов таких цепей публиковать данные транзакций в Эфириуме, любой может оспорить недействительные блоки, создав доказательства мошенничества со ссылкой на правильное состояние цепи.

Цепи Плазмы в основном хранят данные транзакций у оператора и не публикуют никаких данных в основной сети (то есть, кроме периодических коммитментов состояния). Это означает, что пользователи должны полагаться на оператора в предоставлении данных блока, если им нужно создать доказательства мошенничества, оспаривающие недействительные транзакции. Если эта система работает, пользователи всегда могут использовать доказательства мошенничества для защиты своих средств.

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

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

Поэтому самым оптимистичным решением является попытка «массового выхода» пользователей из цепи Плазмы. Массовый выход замедляет план злонамеренного оператора по краже средств и обеспечивает определенную степень защиты для пользователей. Запросы на вывод упорядочиваются на основе того, когда был создан каждый UTXO (или токен), что не позволяет злонамеренным операторам осуществлять фронтраннинг честных пользователей.

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

Но этот подход все еще имеет проблемы. Например, если всем пользователям цепи Плазмы нужно выйти (что возможно в случае со злонамеренным оператором), то всё действительное состояние цепи Плазмы должно быть выгружено на базовый уровень Эфириума одновременно. Учитывая произвольный размер цепей Плазмы (высокая пропускная способность = больше данных) и ограничения скорости обработки Эфириума, это не идеальное решение.

Хотя «игры с выходом» (exit games) звучат хорошо в теории, в реальной жизни массовые выходы, скорее всего, вызовут перегрузку всей сети в самом Эфириуме. Помимо нанесения ущерба функциональности Эфириума, плохо скоординированный массовый выход означает, что пользователи могут не успеть вывести средства до того, как оператор опустошит все аккаунты в цепи Плазмы.

Плюсы и минусы Плазмы

ПлюсыМинусы
Обеспечивает высокую пропускную способность и низкую стоимость одной транзакции.Не поддерживает общие вычисления (не может запускать смарт-контракты). Через логику предикатов поддерживаются только базовые переводы токенов, обмены и некоторые другие типы транзакций.
Хорошо подходит для транзакций между произвольными пользователями (нет накладных расходов на пару пользователей, если оба присутствуют в цепи Плазмы).Необходимость периодически следить за сетью (требование живучести) или делегировать эту ответственность кому-то еще, чтобы обеспечить безопасность своих средств.
Цепи Плазмы могут быть адаптированы к конкретным сценариям использования, которые не связаны с основной цепью. Любой, включая бизнес, может настроить смарт-контракты Плазмы для обеспечения масштабируемой инфраструктуры, работающей в различных контекстах.Полагается на одного или нескольких операторов для хранения данных и предоставления их по запросу.
Снижает нагрузку на основную сеть Ethereum за счет переноса вычислений и хранения офчейн.Вывод средств задерживается на несколько дней, чтобы оставить время для оспариваний. Для взаимозаменяемых активов это может быть смягчено провайдерами ликвидности, но с этим связаны капитальные затраты.
Если слишком много пользователей попытается выйти одновременно, основная сеть Ethereum может оказаться перегруженной.

Плазма и протоколы масштабирования уровня 2 (l2)

Хотя когда-то Плазма считалась полезным решением для масштабирования Эфириума, с тех пор от нее отказались в пользу протоколов масштабирования уровня 2 (l2). Решения масштабирования уровня 2 (l2) устраняют ряд проблем Плазмы:

Эффективность

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

Поддержка смарт-контрактов

Еще одной проблемой фреймворка Плазмы была неспособность поддерживать исполнение смарт-контрактов Эфириума (открывается в новой вкладке). В результате большинство реализаций Плазмы создавались в основном для простых платежей или обмена токенов ERC-20.

Напротив, оптимистичные роллапы совместимы с виртуальной машиной Ethereum и могут запускать нативные смарт-контракты Эфириума, что делает их полезным и безопасным решением для масштабирования децентрализованных приложений (dapp). Аналогичным образом, в настоящее время планируется создать реализацию EVM с нулевым разглашением (zkEVM) (открывается в новой вкладке), которая позволит ZK-роллапам обрабатывать произвольную логику и исполнять смарт-контракты.

Недоступность данных

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

Проблема массового выхода

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

Аналогичным образом, оптимистичные роллапы налагают период задержки на выводы, в течение которого любой может инициировать оспаривание и предотвратить мошеннические запросы на вывод. Хотя это похоже на Плазму, разница в том, что верификаторы имеют доступ к данным, необходимым для создания доказательств мошенничества. Таким образом, пользователям роллапов нет необходимости участвовать в безумной миграции в основную сеть Ethereum по принципу «кто успел, тот и вышел».

Чем Плазма отличается от сайдчейнов и шардинга?

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

Плазма и сайдчейны

Сайдчейн — это независимо управляемый блокчейн, подключенный к основной сети Ethereum через двусторонний мост. Мосты позволяют пользователям обменивать токены между двумя блокчейнами для совершения транзакций в сайдчейне, снижая перегрузку основной сети Ethereum и улучшая масштабируемость. Сайдчейны используют отдельный механизм консенсуса и обычно намного меньше основной сети Ethereum. В результате перенос активов в эти цепи через мост сопряжен с повышенным риском; учитывая отсутствие гарантий безопасности, унаследованных от основной сети Ethereum в модели сайдчейна, пользователи рискуют потерять средства в случае атаки на сайдчейн.

И наоборот, цепи Плазмы получают свою безопасность от основной сети (Мейннет). Это делает их ощутимо более безопасными, чем сайдчейны. Как сайдчейны, так и цепи Плазмы могут иметь различные протоколы консенсуса, но разница в том, что цепи Плазмы публикуют корни Меркла для каждого блока в основной сети Ethereum. Корни блоков — это небольшие фрагменты информации, которые мы можем использовать для проверки информации о транзакциях, происходящих в цепи Плазмы. В случае атаки на цепь Плазмы пользователи могут безопасно вывести свои средства обратно в Мейннет, используя соответствующие доказательства.

Плазма и шардинг

И цепи Плазмы, и цепочки шардов периодически публикуют криптографические доказательства в основной сети Ethereum. Однако обе имеют разные свойства безопасности.

Цепочки шардов отправляют в Мейннет «заголовки сопоставления» (collation headers), содержащие подробную информацию о каждом шарде данных. Узлы в Мейннете проверяют и обеспечивают действительность шардов данных, снижая вероятность недействительных переходов в шардах и защищая сеть от вредоносной активности.

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

Примечание: шардинг блокчейна Эфириума больше не входит в дорожную карту. Его заменили на масштабирование с помощью роллапов и данкшардинга.

Использование Плазмы

Несколько проектов предоставляют реализации Плазмы, которые вы можете интегрировать в свои децентрализованные приложения (dapp):

Дополнительная литература

Знаете ресурс сообщества, который вам помог? Отредактируйте эту страницу и добавьте его!

Руководства: Цепи Плазмы в Эфириуме