Композируемость смарт-контрактов
Краткое введение
Смарт-контракты в Эфириуме являются публичными, и их можно рассматривать как открытые API. Вам не нужно писать собственный смарт-контракт, чтобы стать разработчиком децентрализованных приложений (dapp), достаточно знать, как с ними взаимодействовать. Например, вы можете использовать существующие смарт-контракты Юнисвоп (opens in a new tab), децентрализованной биржи, для обработки всей логики свопа токенов в вашем приложении — вам не нужно начинать с нуля. Ознакомьтесь с некоторыми из их контрактов v2 (opens in a new tab) и v3 (opens in a new tab).
Что такое композируемость?
Композируемость — это объединение отдельных компонентов для создания новых систем или результатов. В разработке программного обеспечения композируемость означает, что разработчики могут повторно использовать существующие программные компоненты для создания новых приложений. Хороший способ понять композируемость — представить компонуемые элементы в виде кубиков Lego. Каждый кубик Lego можно соединить с другим, что позволяет строить сложные конструкции путем комбинирования различных деталей.
В Эфириуме каждый смарт-контракт — это своего рода кубик Lego: вы можете использовать смарт-контракты из других проектов в качестве строительных блоков для своего проекта. Это означает, что вам не нужно тратить время на изобретение велосипеда или создание всего с нуля.
Как работает композируемость?
Смарт-контракты Эфириума подобны публичным API, поэтому любой может взаимодействовать с контрактом или интегрировать их в dapp для добавления функциональности. Композируемость смарт-контрактов обычно основывается на трех принципах: модульности, автономности и обнаруживаемости:
1. Модульность: это способность отдельных компонентов выполнять определенную задачу. В Эфириуме каждый смарт-контракт имеет конкретный вариант использования (как показано на примере Юнисвоп).
2. Автономность: компонуемые компоненты должны иметь возможность работать независимо. Каждый смарт-контракт в Эфириуме является самоисполняемым и может функционировать, не полагаясь на другие части системы.
3. Обнаруживаемость: разработчики не могут вызывать внешние контракты или интегрировать программные библиотеки в приложения, если первые не являются общедоступными. По своей архитектуре смарт-контракты имеют открытый исходный код; любой может вызвать смарт-контракт или сделать форк кодовой базы.
Преимущества композируемости
Сокращение цикла разработки
Композируемость уменьшает объем работы, которую разработчикам приходится выполнять при создании dapp. Как говорит Навал Равикант: (opens in a new tab) «Открытый исходный код означает, что каждую проблему нужно решить только один раз».
Если существует смарт-контракт, решающий одну проблему, другие разработчики могут использовать его повторно, чтобы им не приходилось решать ту же самую проблему. Таким образом, разработчики могут брать существующие программные библиотеки и добавлять дополнительные функции для создания новых dapp.
Больше инноваций
Композируемость поощряет инновации и эксперименты, поскольку разработчики могут свободно повторно использовать, изменять, дублировать или интегрировать открытый исходный код для достижения желаемых результатов. В результате команды разработчиков тратят меньше времени на базовую функциональность и могут уделять больше времени экспериментам с новыми функциями.
Улучшенный пользовательский опыт
Интероперабельность между компонентами экосистемы Эфириума улучшает пользовательский опыт. Пользователи получают доступ к более широкой функциональности, когда dapp интегрируют внешние смарт-контракты, по сравнению с фрагментированной экосистемой, где приложения не могут взаимодействовать друг с другом.
Мы используем пример из арбитражной торговли, чтобы проиллюстрировать преимущества интероперабельности:
Если токен торгуется дороже на exchange A, чем на exchange B, вы можете воспользоваться разницей в цене для получения прибыли. Однако вы можете сделать это только в том случае, если у вас достаточно капитала для финансирования транзакции (т. е. покупки токена на exchange B и его продажи на exchange A).
В сценарии, когда у вас недостаточно средств для покрытия сделки, идеальным вариантом может стать флеш-кредит. Флеш-кредиты являются весьма технически сложными, но основная идея заключается в том, что вы можете занять активы (без залога) и вернуть их в рамках одной транзакции.
Возвращаясь к нашему первоначальному примеру, арбитражный трейдер может взять крупный флеш-кредит, купить токены на exchange B, продать их на exchange A, вернуть капитал с процентами и оставить себе прибыль в рамках одной и той же транзакции. Эта сложная логика требует объединения вызовов нескольких контрактов, что было бы невозможно, если бы смарт-контрактам не хватало интероперабельности.
Примеры композируемости в Эфириуме
Свопы токенов
Если вы создаете dapp, требующее оплаты транзакций в ETH, вы можете позволить пользователям платить в других токенах ERC-20, интегрировав логику свопа токенов. Код автоматически конвертирует токен пользователя в ETH до того, как контракт выполнит вызванную функцию.
Управление
Создание индивидуальных систем управления для DAO может быть дорогим и трудоемким процессом. Вместо этого вы можете использовать набор инструментов для управления с открытым исходным кодом, такой как Aragon Client (opens in a new tab), для запуска вашей DAO, чтобы быстро создать структуру управления.
Управление идентичностью
Вместо создания пользовательской системы аутентификации или использования централизованных провайдеров вы можете интегрировать инструменты децентрализованной идентичности (DID) для управления аутентификацией пользователей. Примером является SpruceID (opens in a new tab), набор инструментов с открытым исходным кодом, который предлагает функцию «Войти с помощью Эфириума» (Sign in with Ethereum), позволяющую пользователям аутентифицировать свою личность с помощью кошелька Эфириума.
Связанные руководства
- Начните разработку фронтенда вашего dapp с помощью create-eth-app — обзор того, как использовать create-eth-app для создания приложений с популярными смарт-контрактами без дополнительных настроек.
Дополнительная литература
Знаете ресурс сообщества, который вам помог? Отредактируйте эту страницу и добавьте его!