Fat Contract!

Жирный контракт: внедрите вычисления в смарт-контракт оффчейн (вне сети)

автор Шелвеном Чжоу, ведущим исследователем Phala Network

Первоисточник материала после конференции WASM 2022

Что такое вычисления вне сети?

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

Рисунок 1. Выполнение транзакции ончейн

На рисунке 1показана модель выполнения ончейн. Само выполнение являетсядетерминированным: транзакция выполняется всеми узлами, и они должны согласовать конечное состояние.

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

Рисунок 2. Выполнение оффчейн для блокчейна

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

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

Шаг к ненадежной оффчейн-инфраструктуре

Ключом к решению описанной выше проблемы является поиск «надежных» оффчейн-работников. Есть несколько вариантов:

  • проверяемые методы вычислений;

  • доказательство с нулевым разглашением;

  • аппаратные решения, такие как безопасный анклав .

Phala — это не требующее доверия вычислительное облако, все узлы майнинга которого являются безопасными работниками, использующими безопасные анклавы.

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

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

Это побуждает нас разработать новую модель исполнения контрактов, т. е.Fat (PHAt) Contract, которая способна выполнять вычисления вне цепочки (оффчейн). Стоит отметить, что мы намеренно решили не просто переносить EVM в безопасный анклав, поскольку он был разработан для выполнения ончейн, соответственно его трудно расширять.

Возможности и сценарии применения

The Fat Contract должен быть написан Parity ink!. С точки зрения разработчиков разница незначительна при написании ink! Contract и Fat Contract, за исключением расширений, которые мы предоставляем для Fat Contract. Ключевое отличие заключается в том, где они выполняются: ink! сontract выполняется узлами Substrate и Fat Contract в pRuntime (среда выполнения, настроенная Phala) в наших защищенных рабочих процессах вне сети. Очевидно, что Fat Contract обладает всеми преимуществами, упомянутыми выше.

Рисунок 3. Сравнение Fat Contract и существующих смарт-контрактов

С помощью Fat Contract теперь можно реализовать приложения, которые раньше требовали создания новой цепочки с помощью одного контракта.

Рисунок 4. Сценарии применения Fat Contract

Модель Fat Contract

Принцип работы Fat Contract прост: поддерживая устаревшую логику выполнения в сети, он пытается обеспечить полнофункциональную среду выполнения вне сети с конфиденциальностью, высокой производительность и необходимые функции, такие как доступ в Интернет и хранилище. Наше понимание здесь заключается в том, что только небольшая часть состояния (например, баланс токенов и владение NFT) в DApp действительно должна сохраняться в ончейн, поэтому мы рекомендуем разработчикам реализовывать большую часть своей логики оффчейн.

Рисунок 5. ink! / Пример Fat Contract

**Разговор без дела ничего не стоят. Позвольте показать вам код.**Это контракт Hello World от ink!. Как и было обещано, вы можете запустить его в Phala без каких-либо модификаций. В этом контракте состояние контракта (ончейн) описывается переменнойvalue. И в зависимости от того, будет ли изменено состояние, следующие функции делятся на два класса: изменяемые (*flip()*function) и неизменяемые (*get()*function).

Соответственно, мы делим запросы пользователя к этим функциям наКоманды (Command), которые отправляются в изменяемые функции и изменяют состояние ончейна, иЗапросы (Query), которые отправляются в неизменяемые функции и оставляют неизменное состояние ончейна.

Рисунок 6. Выполнение команды в Fat Contract

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

Рисунок 7. Выполнение запроса в Fat Contract

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

Это означает, что вы можете напрямую использовать все существующие веб-сервисы, включая потоки данных, API-интерфейсы ботов Telegram/Discord, онлайн-хранилище, такое как AWS, и многое другое.

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

Эта пара ключей подтверждает подлинность программы и может использоваться для подписи любых сообщений, чтобы доказать, что они действительно созданы по сертифицированному контракту и, следовательно, им можно доверять. Это позволяет выполнять операцию аттестации, лежащую в основе Oracle, Decentralized Identity и других интересных приложений Web3.

Теперь, почему бы не запачкать руки и непопробовать Fat Contract самостоятельно?

Больше информации:

  1. Blog:Introduction of Fat Contract

  2. Paper:Off-chaining Models and Approaches to Off-chain Computations

  3. Blog:Substrate off-chain workers: Secure and efficient computing-intensive tasks

  4. Blog:Off-Chain Computation Solutions for Ethereum Developers

Phala Networkрешает проблему доверия к вычислительному облаку. Организуя децентрализованную сеть вычислительных узлов по всему миру, она предлагает высокопроизводительные услуги, не полагаясь на какого-либо поставщика облачных услуг. Работники Phala запускают программы в Secure Enclaves, технологии конфиденциальности, уже встроенной в современные процессоры, обеспечивающей универсальное и конфиденциальное выполнение. Вместе это создает инфраструктуру для мощного, безопасного и масштабируемого вычислительного облака без доверия.

💎 —Discord PhalaNetwork|Телеграм|Telegram en

✅ — |Website|Twitter|Github|Forum|

🤖 —Discord Phala Word

0
3tMUc3…q23WgPPost author

Информация о проктах дотсамы

0 comments

Информация о проктах дотсамы