Phala и Acala — демонстрация межсетевого взаимодействия в тестовой сети Rococo

aoritus
Phala Network Russia
7 min readDec 25, 2020

--

Зачем нужны межсетевые транзакции?

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

Что такое интерперабельность? Вот пример, которым поделился основной разработчик Parity — Томаш Дрвенга на первой встрече сообщества Polkadot — Polkadot Decoded:

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

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

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

Как использовать межсетевую технологию, чтобы сделать вещи менее абстрактными и приблизить их к текущей экосистеме Polkadot/Kusama?

  • Acala - это децентрализованный финансовый центр Polkadot, который предлагает набор примитивов DeFi, включая стейблкоины, DEX и производные стейкинга.
  • Phala Network — это протокол конфиденциальности блокчейна. Phala позволяет выполнять обобщенные вычисления (т.е. выполнение смарт-контрактов по Тьюрингу), которые также сохраняют конфиденциальность с помощью комбинации Trusted Execution Environment (TEE) и технологий блокчейна. Phala обеспечивает масштабируемое и надежное выполнение смарт-контрактов, таких как финансовые транзакции, без утечки конфиденциальных данных.

Теперь предположим, что мы хотим достичь следующего:

  • Разрешить активам и контрактам DeFi на Acala использовать возможности масштабируемого исполнения и конфиденциальности Phala;
  • Разрешить использовать частные ресурсы Phala в наборе приложений Acala

Используя межсетевой протокол Polkadot/Kusama мы можем достичь обе цели без изменения ни единой строчки кода! Для любых взаимодействий между блокчейнами, не связанными с Polkadot/Kusama, это потребовало бы огромных ресурсов и энергии от разработчиков.

Демонстрация межсетевых транзакций

Github: https://github.com/Phala-Network/phala-blockchain/tree/rococo

Rococo Relay Chain

Как достичь межсетевого взаимодействия?

Межсетевая функциональность обеспечивается протоколом XCMP, одинаково доступным для Relay Chain, парачейнов и мостов. Межсетевые транзакции выполняются с помощью простого механизма очередей, основанного на хеш-дереве для обеспечения точности. Задача валидатора Relay Chain — «переместить» транзакции из выходной очереди парачейна отправки во входную очередь парачейна получения. Связанные метаданные хранятся в виде хэша в памяти Relay Chain.

Relay Chain (релейная цепь) — сердце Polkadot, отвечающее за общую безопасность сети, консенсус и межсетевое взаимодействие.

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

Протокол XCMP можно разделить на:

  • VMP: связь сети парачейн-Relay Chain
  • HRMP: релейная связь парачейн-Relay Chain-парачейн
  • XCMP: прямая связь парачейн-парачейн

VMP и HRMP в настоящее время реализованы в Rococo v0, но Rococo v1 все еще находится в разработке, поэтому мы реализовали межсетевую функциональность между Phala и Acala в Rococo v0.

Архитектура

Как показано на схеме выше, межсетевое взаимодействие (перевод) Acala-Phala на основе Polkadot XCMP состоит из трех частей:

  • Сеть: Relay Chain Rococo, два парачейна: Acala, Phala
  • Межсетевая транзакция: передача сообщений, из Acala в Phala и обратно. Relay Chain осуществляет передачу токенов из Acala в Private Wallet и из Private Wallet в Acala.
  • Черный ящик конфиденциальности: все приватные транзакции на Phala происходят в конфиденциальном контракте, выполняемом в TEE, и состояние всех зашифрованных данных невидимо для внешнего мира, таким образом достигается эффект конфиденциальности.

Создание перевода из Acala в Phala

В мире Polkadot, помимо лично контролируемых счетов, существует еще понятие «суверенные счета». Например, модуль Pallet (или смарт-контракт) на Substrate может содержать определенные активы. Когда парачейн присоединяется к Polkadot, он также может получить свою учетную запись на других парачейнах. Суверенный счет контролируется соответствующим парачейном. Каждый парачейн имеет уникальный идентификатор, который будет сопоставлен с его соответствующей суверенной учетной записью.

Когда Элис создает транзакцию для перевода из Acala на Phala, например, переводя 1000 ACA на счет Phala, который принадлежит Бобу — происходят следующие события:

Прежде всего, в сети Acala — (Withdraw) 1000 ACA будут сняты со счета Элис и отправлены — (Deposit) на суверенный счет Phala.

Сеть Acala создаст сообщение передачи XCMP, указывая, что межсетевой перевод на аккаунт Боба в сети Phala был создан на Acala, и это же сообщение будет отправлено на Relay Chain. Как указывалось ранее — связь парачейн-Relay Chain называется VMP, а тип сообщения будет — UpwardMessage.

После получения сообщения Relay Chain, оно будет проанализировано на наличие идентификатора парачейна, чтобы обнаружить, что получателей сообщения является Phala, и перенаправит сообщение в Phala. Данное сообщение также будет иметь тип связи — VMP, но теперь тип сообщения — DownwardMessage.

HRMP — это простой метод обмена сообщениями между сетями, который уже поддерживается Rococo v0. Принцип работы заключается в том, что сеть A создает UpwardMessage в Relay Chain, а затем Relay Chain создает DownwardMessage для передачи сообщения в сеть B. Следовательно, HRMP реализуется комбинацией двух VMP.

Private Wallet — принимаем переводы активов и конвертируем их в приватные версии

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

На стороне Phala, после того, как сообщение о передаче между сетями принято основной сетью, оно напрямую направляется в контракт Private Wallet в TEE. Когда конфиденциальный контракт получит сообщение, он добавит 1000 ACA к счету Боба.

Все переводы в конфиденциальном контракте защищены сквозным зашифрованием на протяжении всего пути. Хотя со стороны видно, что Боб получил 1000 ACA, на Phala он может снова может создать приватный перевод для Чарли.

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

Мы также планируем работать над решением, которое обеспечит соблюдение глобальных правил AML/CFTC, чтобы пользователи могли наслаждаться абсолютной конфиденциальностью, в то время как протокол обеспечивает их соответствие правилам алгоритмическим способом. Мы считаем, что автоматизация соответствия на основе определенных критериев — единственный надежный путь вперед для финансовых транзакций, обеспечивающих конфиденциальность в условиях отсутствия разрешений. В противном случае действующие правила будут по-прежнему использоваться злоумышленниками, в то время как пользователи, которые действуют с благими намерениями, но просто хотят обеспечить высокий уровень конфиденциальности своих финансов, будут обнаружены и в следствии чего получат отказ обслуживании без значимой причины.

Создание перевода из Phala на Acala

Наконец, для вывода своих средств мы можем сделать межсетевой перевод из приватного кошелька Phala на Acala. Например, после получения 1000 ACA от Боба посредством защищенного перевода (Shielded Transaction), Чарли может создать запрос на стороне Phala для отправки 500 ACA на счет Элис в сети Acala, в процессе произойдет следующее:

TEE получает заказ на перевод, уменьшает баланс Чарли на 500 ACA, и создает транзакцию межсетевого перевода в сеть Phala.

После того, как основная сеть Phala получит запрос на межсетевой перевод, она сразу отправит сообщение перевода в Relay Chain. Тип перевода — VMP, сообщение — UpwardMessage.

Похожим образом Relay Chain отправит сообщение и Acala, но теперь сообщение будет — DownwardMessage.

После получения сообщения — протокол Acala может вывести 500 ACA из суверенного счета Phala и отправить на счет Элис. Межсетевой перевод завершен.

Заключение

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

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

В этой статье мы продемонстрировали только верхушку айсберга мощных возможностей XCMP. Мы можем напрямую настроить взаимодействие между Acala и Phala, а благодаря комбинации парачейна DeFi с вычислением конфиденциальности — DeFi может получить возможности конфиденциальности, которые часто необходимы при работе с финансовыми данными. В экосистеме Ethereum DeFi мы уже увидели преимущества возможности компоновки, поэтому мы считаем, что XCMP станет мощным строительным блоком Dapp, и с нетерпением ждем появления новых приложений, объединенных парачейнами на Polkadot.

Немного о Phala

Конфиденциальный блокчейн со смарт-контрактом на основе Substrate, на котором вы можете разрабатывать приложения блокчейна, сохраняющие конфиденциальность и приватность. Участник стартового состава Substrate Builders Program. Получатель гранта Фонда Web3.

Website | Twitter | Github | Telegram | Discord

--

--