Блог им. Ilia_Zavialov

Завьялов Илья Николаевич про Plasma.

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


Plasma — это ряд решений для масштабирования блокчейна, которые позволяют хранить все данные и вычисления, за исключением депозитов, снятия средств и корней Меркла, вне блокчейна. Это позволяет добиться очень большого прироста масштабируемости, который не зависит от доступности данных на блокчейне. Плазма была впервые изобретена в 2017 году, а в 2018 году появилось множество ее вариаций, в частности, Minimal Viable Plasma, Plasma Cash, Plasma Cashflow и Plasma Prime. К сожалению, с тех пор Plasma в значительной степени вытеснена роллапами по причинам, связанным в первую очередь с (i) большими затратами на хранение данных на стороне клиента и (ii) фундаментальными ограничениями Plasma, которые не позволяют применить ее за пределами платежей.

Появление доказательств достоверности (они же ZK-SNARK) дает нам повод переосмыслить это решение. Самая большая проблема, связанная с использованием Plasma для платежей, — хранение данных на стороне клиента — может быть эффективно решена с помощью доказательств достоверности. Кроме того, доказательства достоверности предоставляют широкий набор инструментов, позволяющих создать цепочку, подобную Plasma, которая будет работать с EVM. Гарантии безопасности Plasma не покроют всех пользователей, поскольку фундаментальные причины невозможности распространения игр с выходом в стиле Plasma на многие виды сложных приложений все еще остаются. Тем не менее, на практике очень большой процент активов может быть защищен.

 

Обзор: как работает Plasma 

Наиболее простым для понимания вариантом Plasma является Plasma Cash. В Plasma Cash каждая отдельная монета рассматривается как отдельный NFT, и для каждой монеты ведется отдельная история. У цепочки Plasma есть оператор, который отвечает за создание и регулярную публикацию блоков. Транзакции в каждом блоке хранятся в виде дерева Меркла: если транзакция передает право собственности на монету k, она появляется в позиции k дерева. Когда оператор цепочки Plasma создает новый блок, он публикует в цепочке корень дерева Меркла и напрямую рассылает каждому пользователю ветви дерева Меркла, соответствующие монетам, которыми владеет данный пользователь.

Завьялов Илья Николаевич про Plasma.

Предположим, что это три последних дерева транзакций в цепочке Plasma Cash. Тогда, предполагая, что все предыдущие деревья действительны, мы знаем, что Ева в настоящее время владеет монетой 1, Дэвид — монетой 4, а Джордж — монетой 6.

 

Основным риском в любой системе Plasma является неправильная работа оператора. Это может произойти по двум причинам:

 

  • Публикация недействительного блока (например, оператор включает транзакцию, отправляющую монету 1 от Фреда к Гермионе, даже если Фред не владеет этой монетой в данный момент)
  • Публикация недоступного блока (например, оператор не отправляет Бобу его ветвь Меркла для одного из блоков, лишая его возможности когда-либо доказать кому-либо еще, что его монета все еще действительна и не потрачена).

 

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

 

  • Не последний владелец: более поздняя транзакция, подписанная выходящим, в результате которой монета выходящего перешла к кому-то другому
  • Двойная трата: транзакция, передающая монету от предыдущего владельца другому лицу, которая была включена до транзакции, передающей монету выходящему.
  • Недействительная история: транзакция, в результате которой монеты были переведены ранее (в течение последних 7 дней) и не имеет соответствующей траты. Истец может ответить, предоставив соответствующий расход; если он этого не сделает, выход завершится неудачей.
Завьялов Илья Николаевич про Plasma.

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

Обобщение на взаимозаменяемые токены

Приведенная выше схема работает для NFT. Однако гораздо чаще, чем NFT, встречаются сменные токены, такие как ETH и USDC. Один из способов применить Plasma Cash к сменным токенам — это просто сделать каждый небольшой номинал монеты (например, 0,01 ETH) отдельным NFT. К сожалению, в этом случае газовые затраты на выход будут очень большими.

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

  • Использовать Plasma Cash, но использовать причудливые алгоритмы для быстрого вычисления дерева Меркла для действительно большого числа объектов, если многие соседние объекты одинаковы. Сделать это на удивление несложно; python-реализацию можно посмотреть здесь.
  • Используйте Plasma Cashflow, который просто представляет множество соседних монет как один объект.

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

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

Завьялов Илья Николаевич про Plasma.

Вывод 0,2 ETH UTXO в правом нижнем углу можно отменить, показав вывод любого из UTXO в его истории, показанных зеленым цветом. Обратите внимание, что левый и левый средний UTXO являются предками, а левый верхний UTXO — нет. Этот подход похож на order-based coloring идеи по порядку из протоколов цветных монет примерно 2013 года.

 

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

 

Проблемы, связанные с обобщением на EVM

 

К сожалению, обобщение на EVM, выходящее за рамки платежей, гораздо сложнее. Одна из ключевых проблем заключается в том, что многие объекты в EVM не имеют конкретного владельца. Безопасность Plasma зависит от того, что у каждого объекта есть владелец, который отвечает за то, чтобы следить за данными цепочки и выходить из нее, если что-то пойдет не так. Однако многие приложения Ethereum работают иначе. Например, пулы ликвидности Uniswap не имеют единого владельца.

 

Другая проблема заключается в том, что EVM не пытается ограничить зависимости. ETH, находящийся на счете A в блоке N, мог поступить из любого места в блоке N-1. Для того чтобы выйти из непротиворечивого состояния, в плазменной цепи EVM необходимо создать игру выхода, в которой, в крайнем случае, желающему выйти, используя информацию из блока N, придется заплатить за публикацию всего состояния блока N в цепи: стоимость газа может исчисляться миллионами долларов. Плазменные схемы на основе UTXO не имеют такой проблемы: каждый пользователь может вывести свои активы из того блока, данные о котором у него есть.

 

Третья проблема заключается в том, что неограниченные зависимости в EVM значительно затрудняют согласование стимулов для доказательства достоверности. Достоверность любого состояния зависит от всех остальных, и поэтому для доказательства какого-либо одного состояния требуется доказать все. Сортировка отказов в такой ситуации, как правило, не может быть сделана совместимой со стимулами из-за проблемы доступности данных. Особенно неприятной проблемой является потеря гарантии, присутствующей в системах на основе UTXO, что состояние объекта не может измениться без согласия его владельца. Эта гарантия невероятно полезна, поскольку означает, что владелец всегда знает о последнем доказуемом состоянии своих активов, и упрощает проведение выходных игр. Без нее создание игр становится гораздо сложнее.

 

Как доказательства действительности могут решить многие из этих проблем

 

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

 

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

 

Расширение на EVM: параллельные UTXO-графы

 

В случае EVM доказательства достоверности также позволяют нам сделать кое-что умное: с их помощью можно реализовать параллельный UTXO-граф для токенов ETH и ERC20 и SNARK-доказать эквивалентность между UTXO-графом и состоянием EVM. Получив это, можно реализовать «обычную» систему Plasma на графе UTXO.

Завьялов Илья Николаевич про Plasma.

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

Вывод

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

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

 


теги блога Ilia_Zavialov

....все тэги



UPDONW
Новый дизайн