Масштабирование Ethereum: каналы состояния, Plasma и Truebit (часть 2)

layer2_0

Строительство Тунханнокского железнодорожного виадука в Пенсильвании. Древнеримские принципы строительства применяются для новых целей.

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

II. Plasma

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

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

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

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

layer2scaling_3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

layer2scaling_4

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

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

layer2scaling_5

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

Однако вывод средств сам по себе подразумевает некоторые риски. Например, что произойдёт, если все пользователи дочернего блокчейна попытаются вывести все свои средства одновременно? Во время такого массового исхода главной сети 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). Вместо этого мы заставляем решателя и оппонента определить конкретную операцию, которая приводит к их противоречию. Таким образом, мы «загоняем» обе стороны «в угол» и находим конкретную строку кода, результат некоторой приводит к разногласию.

layer2scaling_6

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

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

Выводы

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

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

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

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

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

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

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

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

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

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

Источник: Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit
По материалам: Raiden, Plasma и Truebit. Как научить Ethereum работать с миллиардами пользователей



Рубрики:Новичкам, Теория, Ethereum, эфир

Метки: , , , , ,

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s