Активируйте JavaScript для полноценного использования elitetrader.ru Проверьте настройки браузера.
Масштабирование Ethereum: Каналы состояния, Plasma и Truebit » Элитный трейдер
Элитный трейдер
Искать автора

Масштабирование Ethereum: Каналы состояния, Plasma и Truebit

16 апреля 2018 | Ethereum (ETH|USD)
Строительство Тунханнокского железнодорожного виадука в Пенсильвании. Древнеримские принципы строительства применяются для новых целей.

Для Ethereum 2018 год станет годом инфраструктуры. Начальный этап принятия станет испытанием платформы на прочность и тестом её возможностей, и технологии масштабирования Ethereum вновь окажутся в центре внимания.

Ethereum всё ещё очень незрелая технология. На сегодняшний день платформа небезопасна и слабо масштабируема. Это ясно всем, кто близко знаком с её технологиями. Однако за последний год ажиотаж вокруг ICO привёл к чрезмерной загрузке сети. Ethereum и web3 – безопасный, удобный децентрализованный интернет на основе общих экономических протоколов с миллиардами пользователей — по-прежнему не более чем обещания светлого будущего, и их не исполнить, пока не будет выстроена критическая инфраструктура.

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

В этом материале речь пойдёт об одной категории таких проектов: офчейн-решениях, или решениях второго уровня.
Сначала мы обсудим трудности масштабирования Ethereum и других публичных блокчейнов в целом.
Затем мы расскажем о разных подходах к масштабированию и рассмотрим различия между решениями на уровне базового протокола и решениями второго уровня.
После этого мы подробно изучим решения второго уровня, объясним, как они работают, и, в частности, расскажем о каналах состояния, Plasma и Truebit.

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

1. Проблемы масштабирования публичных блокчейнов

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

Наиболее обсуждаемый из этих вопросов — это пропускная способность сети. На данный момент Ethereum может обрабатывать до 15 транзакций в секунду, в то время как Visa обрабатывает около 45 000 транзакций в секунду. В прошлом году популярность таких приложений, как Cryptokitties, или некоторых ICO становилась причиной замедления работы всей сети и роста стоимости газа.

Главное ограничение публичных блокчейнов заключается в том, что каждая транзакция должна быть обработана каждым узлом сети. Любая операция в блокчейне Ethereum — платёж, рождение криптокошечки, запуск нового контракта ERC20 — должна быть проведена параллельно каждым узлом сети. Это заложено в системе, и отчасти благодаря этому публичные блокчейны так надёжны. Узлам не приходится полагаться на кого бы то ни было, чтобы определить текущее состояние блокчейна — они вычисляют его самостоятельно.

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

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

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

На концептуальном уровне существует два пути решения этой проблемы:

I. Что, если узлам не нужно будет обрабатывать каждую транзакцию параллельно?

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

Фрагмент сети А может обрабатывать один ряд транзакций, а фрагмент Б — другой. Это фактически удвоит пропускную способность блокчейна. Если мы сможем разделить сеть на большое количество фрагментов, то её пропускная способность возрастёт многократно.

Именно на такой идее строится шардинг – решение проблемы масштабирования, над которым работает исследовательская группа Ethereum Виталика Бутерина. Блокчейн разделяется на фрагменты (шарды), в каждом из которых транзакции могут обрабатываться независимо от остальных фрагментов. Шардинг часто называют решением проблемы масштабирования первого уровня, так как оно должно быть внедрено на базовом уровне протокола Ethereum.

Масштабирование Ethereum: Каналы состояния, Plasma и Truebit


II. Что, если сеть Ethereum способна обрабатывать большее число полезных операций при нынешней мощности?

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

Именно эта идея лежит в основе офчейн-технологий, в том числе каналов состояния, Plasma и Truebit. Несмотря на то что они решают разные проблемы, они все предусматривают выполнение операций вне блокчейна Ethereum, гарантируя при этом достаточный уровень безопасности и неизменяемости.

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



2. Криптоэкономическая природа решений второго уровня

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

Главная сила любого публичного блокчейна — это криптоэкономический консенсус. С помощью тщательно выверенных стимулов, защищённых программно и с помощью криптографии, мы можем создавать сети компьютеров, которые с высокой надёжностью приходят к соглашению о внутреннем состоянии системы. Это ключевая идея из статьи создателя Bitcoin Сатоши Накамото, и сегодня она воплощена во многих публичных блокчейнах, в том числе в Bitcoin и Ethereum.

Криптоэкономический консенсус обеспечивает твёрдую определённость того, что, если не случится ничего экстраординарного – вроде атаки 51%, – то платежи, смарт-контракты и другие операции в главном блокчейне будут выполнены как положено.

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

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

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

I. Каналы состояния

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

Большинство читателей наверняка слышали о платёжных каналах — технологии, известной вот уже несколько лет и лежащей в основе Lightning Network, недавно запущенной поверх сети Bitcoin. Каналы состояния — это более общая форма платёжных каналов: они могут использоваться не только для платежей, но и для любого произвольного обновления состояния системы — например, для внесения изменений в смарт-контракты. Каналы состояния были впервые детально описаны Джеффом Колманом в 2015 году.

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

Представьте, что Элис и Боб собираются поиграть в крестики-нолики с условием, что победитель получает 1 ETH. Самый простой способ сделать это — создать смарт-контракт Ethereum, который реализует правила игры и записывает ходы каждого игрока. Чтобы сделать ход, игрок должен отправить транзакцию в контракт. Как только один из игроков выигрывает, контракт выплачивает победителю 1 ETH.

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

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

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

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

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

Когда Элис и Боб закончат игру – например, потому что Элис выиграла – они смогут закрыть канал, отправив «Судье» окончательное состояние игры и заплатив комиссию только за одну транзакцию. «Судья» убедится, что окончательное состояние подписано обеими сторонами, подождёт определённое время, давая сторонам возможность оспорить результат, а затем выплатит Элис награду в 1 ETH.

Зачем в контракте «Судьи» предусмотрен период ожидания?

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

Особенности и ограничения

Каналы состояния могут использоваться во множестве ситуаций, когда они оказываются выгоднее ончейн-операций. Однако следует помнить, что использование каналов состояния подразумевает некоторые компромиссы.
Каналы состояния полагаются на постоянный контакт сторон. Если Элис потеряет интернет-соединение в период ожидания – например, стараниями Боба, пытающегося заполучить награду любыми способами – она может не успеть оспорить результат до окончания игры. Однако Элис может заплатить третьей стороне за поддержание связи и состояния игры от её имени.
Каналы состояния особенно удобны, если участники собираются обмениваться большим количеством обновлений на протяжении длительного периода времени. Дело в том, что открытие канала состояния и создание контракта «Судьи» требуют изначальной оплаты. Однако как только они запущены, стоимость каждого обновления состояния становится очень низкой.
Каналы состояния лучше всего использовать в приложениях с определённым количеством участников. Это связано с тем, что «Судья» всегда должен знать, кто является участником конкретного канала. Мы можем добавлять и удалять людей, но для этого нужно вносить изменения в смарт-контракт.
Каналы состояния обеспечивают высокую приватность, так как взаимодействие между участниками происходит внутри канала, не транслируется публично и не записывается в блокчейн. Только открывающая и закрывающая транзакции должны быть публичными.
Каналы состояния гарантируют мгновенную окончательность. Это означает, что если обе стороны подписали обновление состояния, оно может считаться окончательным. Обе стороны получают гарантию того, что при необходимости они смогут подтвердить последнее состояние в блокчейне.

В компании L4, мы работаем над Counterfactual – фреймворком для внедрения каналов состояния в децентрализованных приложениях на базе Ethereum. Наше модульное решение широкого применения позволит разработчикам использовать в своих приложениях каналы состояния, не углубляясь в детали их работы. Мы собираемся выпустить подробное описание нашей техники в начале 2018 года.

Другой известный проект, использующий каналы состояния, — это Raiden. На данном этапе он сосредоточен на создании сети платёжных каналов по модели, подобной Lightning Network. Это означает, что пользователи будут открывать не множество платёжных каналов с конкретными людьми, а единственный канал со стороной, у которой есть доступ к более широкой сети каналов, что позволит проводить платёжные операции со всеми пользователями в рамках этой сети и экономить на комиссиях.

Помимо Counterfactual и Raiden, существует несколько более узконаправленных реализаций каналов состояния Ethereum. Например, Funfair разработала каналы состояния для своей децентрализованной платформы азартных игр. Spankchain применила односторонние платёжные каналы для оплаты услуг актёров в фильмах для взрослых, а также использовала каналы состояния при проведении ICO. Horizon Games использует каналы состояния в своей первой игре на базе Ethereum.

II. Plasma

11 августа 2017 года Виталик Бутерин и Джозеф Пун опубликовали статью под заголовком «Плазма: автономные смарт-контракты». В статье рассказывалось о новой технологии, которая способна многократно увеличить пропускную способность сети Ethereum.

Как и каналы состояния, Plasma — это офчейн-решение, которое полагается на блокчейн Ethereum для обеспечения безопасности работы. Однако Plasma подходит к идее с другой стороны, позволяя создание дочерних блокчейнов, присоединённых к главному блокчейну Ethereum.

Эти дочерние блокчейны, в свою очередь, могут иметь свои дочерние блокчейны и т. д.

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



Чтобы понять, как работает Plasma, давайте рассмотрим пример её применения.

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

Во-первых, мы создаём в основном блокчейне несколько смарт-контрактов, которые будут выполнять роль «корней» для нашего дочернего блокчейна. Эти Plasma-корни содержат основные правила изменения состояния дочернего блокчейна, записи хешей состояния дочернего блокчейна, а также выполняют роль платёжного моста, позволяя переводить активы между главным и дочерним блокчейнами.

Затем мы создаём наш дочерний блокчейн, который может иметь собственный алгоритм консенсуса. В этом примере представим, что он использует доказательство полномочий (Proof of Authority) — простой консенсус-механизм, который полагается на валидаторов – доверенных производителей блоков. Точно так же, как майнеры в системе Proof of Work, они получают транзакции, составляют из них блоки и собирают комиссии за их обработку. Чтобы упростить ситуацию, представим, что только вы (компания, создавшая игру) можете создавать блоки, то есть ваша компания владеет несколькими узлами, которые производят блоки дочернего блокчейна.

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

Теперь, когда дочерний блокчейн готов, мы можем создавать основные компоненты нашей карточной игры. Карточки сами по себе — это токены ERC721, которые изначально были созданы в главном блокчейне Ethereum, а затем переведены в дочерний блокчейн через Plasma-корень. У этого подхода есть важная особенность: Plasma позволяет нам масштабировать взаимодействия с цифровыми активами в блокчейне, но эти активы сначала должны быть созданы в основном блокчейне Ethereum. После этого мы можем запускать смарт-контракты, воспроизводящие все правила и логику игры, на дочернем блокчейне.

Чтобы сыграть в нашу игру, пользователю нужно будет взаимодействовать лишь с дочерним блокчейном. Он может владеть активами (карточками-токенами ERC721), покупать и обменивать их на ETH, играть против других пользователей — то есть делать всё, что позволяет игра, никак не взаимодействуя с основным блокчейном. Поскольку для обработки транзакций нужно намного меньшее количество узлов (производителей блоков), комиссия будет ниже, а скорость работы — выше.

Насколько безопасно такое решение?

Если мы перенесём часть операций в дочерний блокчейн, без сомнения, мы сможем выполнять большее количество операций. Однако насколько это безопасно? Можно ли считать окончательными транзакции, которые происходят в дочернем блокчейне? В конце концов, в описанной нами системе создание блоков для нашего дочернего блокчейна осуществляется одной-единственной стороной. Разве это не централизованное решение? Разве компания не может украсть ваши средства или забрать карточки как только пожелает?

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

Давайте рассмотрим несколько примеров недобросовестного поведения производителей блоков и представим, как с этим справится Plasma.

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

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

В Plasma также есть механизм, который позволяет предотвратить мошенничество ещё до вывода средств в главный блокчейн. Любой пользователь, в том числе и вы, может опубликовать доказательство мошенничества в корневой контракт, чтобы продемонстрировать обман со стороны создателя блоков. Это доказательство включает информацию о предыдущем блоке и позволяет показать, что, согласно правилам дочернего блокчейна, поддельный блок не может быть правильным следствием из предыдущего состояния. Если обман доказан, то дочерний блокчейн возвращается к предыдущему блоку. Более того, можно создать систему, в которой любой создатель блоков, подписавший поддельный блок, в наказание лишается своего ончейн-депозита.



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

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



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

Однако вывод средств сам по себе подразумевает некоторые риски. Например, что произойдёт, если все пользователи дочернего блокчейна попытаются вывести все свои средства одновременно? Во время такого массового исхода главной сети Ethereum может не хватить вычислительной мощности, чтобы обработать все транзакции до завершения периода, предназначенного для их оспаривания, а значит пользователи могут потерять свои средства.

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

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

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

Наконец, надо добавить, что это лишь частичное описание, которое упускает немало деталей. Кроме того, Plasma находится ещё на очень раннем этапе развития. Если вам интересно узнать больше о ходе её разработки, можете поискать информацию о Minimal Viable Plasma — простейшей реализации Plasma, предложенной Виталиком Бутериным. Репозиторий рабочей группы из Тайваня можно найти здесь. Кроме того, OmiseGo разрабатывает собственную версию Plasma для своей децентрализованной биржи — команда рассказала о результатах в недавней статье.

III. Truebit

Truebit – это технология, призванная помочь Ethereum производить сложные и ресурсоёмкие вычисления офчейн. Это отличает её от каналов состояния и Plasma, которые скорее полезны для расширения пропускной способности блокчейна Ethereum. Как мы отметили в начале статьи, масштабирование — это многосторонняя задача, которая не ограничивается увеличением пропускной способности. Truebit не позволит нам совершать больше транзакций, но зато даст приложениям Ethereum возможность выполнять более сложные действия, которые по-прежнему можно будет подтверждать в основном блокчейне.

Это позволит нам совершать операции, которые, при выполнении ончейн, создавали бы чрезмерно высокую вычислительную нагрузку на сеть. Примером может послужить простая платёжная верификация (SPV, Simple Payment Verification), с помощью которой смарт-контракты в Ethereum могут проверять результат транзакции в другом блокчейне, будь то Биткоин или Dogecoin.

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

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

Сначала решатель вносит депозит, который хранится в смарт-контракте. Затем вы даёте решателю описание вычисления, которое вам нужно выполнить. Решатель производит вычисления и возвращает результат. Если всё сделано верно (подробности ниже), он получает депозит назад. Если же вычисления окажутся неверными – потому что решатель ошибся или попытался обмануть систему – то он теряет свой депозит.

Но как мы можем узнать, верен ли результат? Truebit использует экономический механизм, который называется «игрой подтверждения». Фактически мы создаём стимул для других сторон, называемых «оппонентами», проверять работу решателя. Если во время игры подтверждения оппоненту удастся доказать, что решатель предоставил неверный результат, этот оппонент получает награду, а решатель теряет свой депозит.

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



Когда конкретная операция, вызывающая разногласия, определена, она оказывается достаточно мелкой, чтобы выполнить её в основном блокчейне Ethereum. Мы затем выполняем её посредством смарт-контракта в сети Ethereum, что позволяет окончательно определить, какая из сторон предоставила правильный результат, а какая ошиблась или солгала.

Вы можете подробнее изучить Truebit, прочитав научную статью или пост Саймона де ла Рувьера.

Выводы

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

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

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

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

Эти три примера — лишь малая часть многочисленных криптоэкономических решений проблемы масштабирования.

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

Решения второго уровня — сильный аргумент в пользу долгосрочной ценности таких программируемых блокчейнов, как Ethereum. Создавать экономические механизмы, лежащие в основе офчейн-решений, возможно только при наличии программируемого блокчейна, ведь для написания кода интерактивных игр необходим скриптовый язык. В таких блокчейнах, как Биткоин, с ограниченными возможностями написания скриптов, это сделать намного сложнее (а в случае с Plasma и вовсе невозможно).

Ethereum позволяет разрабатывать решения второго слоя и находить новые уровни компромисса между скоростью, окончательностью и издержками. Благодаря этому, основной блокчейн становится полезнее для более широкого круга приложений, поскольку для разных моделей угроз в разных приложениях оптимальны разные компромиссы. Транзакции с крупными суммами, которые, возможно, нужно защитить от целых государств, должны проводиться в основном блокчейне. Для обмена цифровыми активами, в котором скорость превыше всего, подойдёт Plasma. Решения второго уровня позволяют нам находить компромисс без какого бы то ни было воздействия на основной блокчейн, сохраняя децентрализацию и окончательность операций.

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

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

/templates/new/dleimages/no_icon.gif (C) Источник
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку - выделить и нажать Ctrl+Enter | Отправить жалобу