PeaceRelay: связующее звено между Ethereum-блокчейнами

Этим летом я участвовал в хакатоне IC3-Ethereum Корнеллского Университета в городе Итака, где представители науки и бизнеса работали над различными проектами.

Я предложил и возглавил PeaceRelay — один из десяти проектов, прошедших отбор. Авторы представили свои идеи участникам в первый день, и каждый желающий присоединился к проекту, с которым работал на протяжении всего хакатона. Мне посчастливилось строить PeaceRelay вместе с Нейтом Рашем и Николасом Лином.

Что такое PeaceRelay?

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

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

Как работает PeaceRelay?

PeaceRelay устроен довольно просто. Для начала давайте рассмотрим механизм, лежащий в основе BTCRelay и мостов между блокчейнами в целом. Пользователи — «relayers» или ретрансляторы — передают заголовки блоков, которые записываются в общий Ethereum-контракт. Напомним, что заголовок блока содержит поле с корневым хешем («Merkle root»), который криптографически подтверждает все транзакции в блоке. Используя данные из заголовка в доказательстве Меркла, можно легко определить, содержится ли в этом блоке определённая транзакция. Поскольку заголовок намного меньше самого блока, а подделать доказательство Меркла практически невозможно, такая проверка транзакций оказывается эффективной и безопасной.

PeaceRelay действует по такому же протоколу взаимодействия блокчейнов. Для простоты давайте ограничимся передачей блоков из Ethereum Classic в Ethereum — обратный процесс работает похожим образом. Итак, у нас имеется контракт на Ethereum, в котором записаны заголовки блоков из сети-источника (в нашем примере это Ethereum Classic). Этот контракт подтверждает каждый новый заголовок, предоставленный ретрансляторами, перед тем, как добавить его в цепочку. После этого контракт принимает от пользователей транзакции из Ethereum Classic вместе с соответствующими доказательствами Меркла. Любопытно, что в заголовке Ethereum-блока содержится ещё и корень базисного дерева Меркла («Patricia Мerkle root»), в котором хранится текущее состояние блокчейна. А значит, можно дополнительно подтвердить множество интересных фактов, в том числе баланс аккаунта или объём его хранилища данных на момент обработки определённого блока.

Трудности

Стоит отметить: раньше считалось, что подтверждать заголовки блоков нецелесообразно из-за высокой вычислительной нагрузки Ethash — алгоритма «proof-of-work», который используется в Ethereum и Ethereum Classic. К счастью, благодаря SmartPool теперь проверка корректности Ethash обойдётся примерно в 2.6 млн единиц газа. Это составляет около 40% от текущего предела газа в блоке, что не так уж и много. Тем не менее, пока подтверждать Ethash в каждом блоке слишком дорого. В связи с этим в будущем посте мы обсудим, как наладить работу PeaceRelay на практике.

Ещё одна непростая задача — проверить в Solidity доказательство на основе базисного дерева Меркла. Это дерево, известное как «Patricia Merkle tree», используется в Ethereum вместо обычного дерева Мерклa ради производительности. Это скорее инжeнерная проблема, однако Нейту пришлось потратить на неё ней почти всю неделю. В работе с доказательствами нам очень помогла утилита Зака Миттона (zmitton).

От одностороннего моста к двусторонней привязке

Выстроив мост в одном направлении, перейти к двусторонней привязке не так уж трудно. Можно заблокировать ETC в специальном контракте на Ethereum Classic и на основе этой транзакции блокировки выпустить новые ETC-токены на Ethereum, создав контракт ETCToken. С другой стороны, чтобы перевести ETC-токены из Ethereum в Ethereum Classic и получить ETC, нужно уничтожить эти токены в контракте ETCToken. Предъявив транзакцию уничтожения, можно высвободить ETC из блокирующего контракта на Ethereum Classic. Механизм блокировки и получения средств изображён на схеме ниже.

PeaceRelayПеревод ETC в блокчейн Ethereum и обратно без необходимости доверия.
Процесс выпуска токенов состоит из трёх этапов:
1. Блокировка ETC в контракте на Ethereum Classic;
2. Для выпуска токена ETC транзакция блокировки (tx1) и её доказательство (p1) отправляются в токен-контракт на Ethereum;
3. Этот контракт подтверждает транзакцию блокировки перед выпуском соответствующей суммы ETC-токенов.
Получение ETC из ETC-токена происходит похожим образом (этапы 4, 5 и 6).

Применение

Биржи ETH-ETC

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

Частные и публичные блокчейны

Недавно Enterprise Ethereum Alliance стал самым большим блокчейн-альянсом. Скорее всего, многие организации в дальнейшем займутся развитием и поддержкой собственных блокчейнов на платформе Ethereum. PeaceRelay позволяет соединять Ethereum не только с Ethereum Classic, но и с любыми другими блокчейнами на основе Ethereum, что открывает интересные возможности. Например, можно было бы переводить сингапурские доллары в токены, а затем переносить их из частного блокчейна центрального банка Сингапура в Ethereum или в другой публичный блокчейн. Таким образом пользователи смогли бы обменивать сингапурские доллары на эфир или множество других токенов на базе Ethereum. Позже, мы опишем этот сценарий подробнее в посте от KyberNetwork.

Предсказание затрат газа

PeaceRelay позволяет подтверждать не только транзакции, но и состояние блокчейна. А значит, как предложил Нейт Раш, в рамках контракта можно проверять, насколько были заполнены недавние блоки (то есть сколько газа было потрачено на их обработку). В зависимости от этого, например, в протоколе «commit-reveal» можно автоматически регулировать время, когда отправляется транзакция раскрытия («reveal»). Представьте себе такой сценарий: согласно контракту, пользователь должен совершить определённую транзакцию до того, как будет обработан конкретный блок. В противном случае пользователю придётся заплатить штраф. Но если блокчейн сильно загружен, то даже отправив транзакцию вовремя, придётся долго ожидать, пока её включат в какой-нибудь блок. Из-за этой задержки пользователь так или иначе будет оштрафован. Но контракт мог бы запрашивать прогноз по затратам газа и откладывать срок для транзакции, если сеть перегружена. Такие прогнозы обеспечили бы справедливость криптографических протоколов. Кроме того, предсказания можно использовать в торговле фьючерсами или опционами на газ. Это помогло бы держателям эфира застраховаться на случай подъёма стоимости газа.

Дальнейшие шаги

Мы с Нейтом Рашем и Николасом Лином разработали функциональный прототип PeaceRelay за неделю хакатона в Корнелльском Университете. Его код находится в открытом доступе и связывает тестовые сети Ropsten и Rinkeby.

Разработкой и поддержкой PeaceRelay займётся KyberNetwork. К ней присоединится команда xRelay из ConsenSys в поддержку их концепции обмена между блокчейнами. О роли PeaceRelay и других мостов между блокчейнами в KyberNetwork вы сможете прочитать в будущих постах компании.

Благодарность

В течение хакатона и после него мы плодотворно пообщались с командой xRelay из ConsenSys — Заком Миттоном, Джозефом Чоу, Сэмом Мэйо. Мы благодарим Виталика Бутерина, Кейси Детрио, Кристиана Райтвиснера из Ethereum Foundation, а также Ярона Вельнера из SmartPool/KyberNetwork за их помощь во время хакатона. Нейт Раш — стажёр в ConsenSys, а Николас Лин — разработчик на py-ethereum в Ethereum Foundation. Спонсором поездки Лои Луу на хакатон выступила Ethereum Foundation.

Источник: Medium



Рубрики:Важное, Теория, ETC, ETH, Ethereum

Метки: , , , , ,

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s