---
title: "Композируемость смарт-контрактов"
description: "Узнайте, как смарт-контракты можно комбинировать, словно кубики Lego, для создания сложных децентрализованных приложений (dapp) путем повторного использования существующих компонентов."
lang: ru
incomplete: true
---

## Краткое введение {#a-brief-introduction}

Смарт-контракты в Эфириуме являются публичными, и их можно рассматривать как открытые API. Вам не нужно писать собственный смарт-контракт, чтобы стать разработчиком децентрализованных приложений (dapp), достаточно знать, как с ними взаимодействовать. Например, вы можете использовать существующие смарт-контракты [Юнисвоп](https://uniswap.exchange/swap), децентрализованной биржи, для обработки всей логики свопа токенов в вашем приложении — вам не нужно начинать с нуля. Ознакомьтесь с некоторыми из их контрактов [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) и [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts).

## Что такое композируемость? {#what-is-composability}

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

В Эфириуме каждый смарт-контракт — это своего рода кубик Lego: вы можете использовать смарт-контракты из других проектов в качестве строительных блоков для своего проекта. Это означает, что вам не нужно тратить время на изобретение велосипеда или создание всего с нуля.

## Как работает композируемость? {#how-does-composability-work}

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

**1. Модульность**: это способность отдельных компонентов выполнять определенную задачу. В Эфириуме каждый смарт-контракт имеет конкретный вариант использования (как показано на примере Юнисвоп).

**2. Автономность**: компонуемые компоненты должны иметь возможность работать независимо. Каждый смарт-контракт в Эфириуме является самоисполняемым и может функционировать, не полагаясь на другие части системы.

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

## Преимущества композируемости {#benefits-of-composability}

### Сокращение цикла разработки {#shorter-development-cycle}

Композируемость уменьшает объем работы, которую разработчикам приходится выполнять при создании [dapp](/apps/#what-are-dapps). [Как говорит Навал Равикант:](https://twitter.com/naval/status/1444366754650656770) «Открытый исходный код означает, что каждую проблему нужно решить только один раз».

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

### Больше инноваций {#greater-innovation}

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

### Улучшенный пользовательский опыт {#better-user-experience}

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

Мы используем пример из арбитражной торговли, чтобы проиллюстрировать преимущества интероперабельности:

Если токен торгуется дороже на `exchange A`, чем на `exchange B`, вы можете воспользоваться разницей в цене для получения прибыли. Однако вы можете сделать это только в том случае, если у вас достаточно капитала для финансирования транзакции (т. е. покупки токена на `exchange B` и его продажи на `exchange A`).

В сценарии, когда у вас недостаточно средств для покрытия сделки, идеальным вариантом может стать флеш-кредит. [Флеш-кредиты](/defi/#flash-loans) являются весьма технически сложными, но основная идея заключается в том, что вы можете занять активы (без залога) и вернуть их в рамках _одной_ транзакции.

Возвращаясь к нашему первоначальному примеру, арбитражный трейдер может взять крупный флеш-кредит, купить токены на `exchange B`, продать их на `exchange A`, вернуть капитал с процентами и оставить себе прибыль в рамках одной и той же транзакции. Эта сложная логика требует объединения вызовов нескольких контрактов, что было бы невозможно, если бы смарт-контрактам не хватало интероперабельности.

## Примеры композируемости в Эфириуме {#composability-in-ethereum}

### Свопы токенов {#token-swaps}

Если вы создаете dapp, требующее оплаты транзакций в ETH, вы можете позволить пользователям платить в других токенах ERC-20, интегрировав логику свопа токенов. Код автоматически конвертирует токен пользователя в ETH до того, как контракт выполнит вызванную функцию.

### Управление {#governance}

Создание индивидуальных систем управления для [DAO](/dao/) может быть дорогим и трудоемким процессом. Вместо этого вы можете использовать набор инструментов для управления с открытым исходным кодом, такой как [Aragon Client](https://client.aragon.org/), для запуска вашей DAO, чтобы быстро создать структуру управления.

### Управление идентичностью {#identity-management}

Вместо создания пользовательской системы аутентификации или использования централизованных провайдеров вы можете интегрировать инструменты децентрализованной идентичности (DID) для управления аутентификацией пользователей. Примером является [SpruceID](https://www.spruceid.com/), набор инструментов с открытым исходным кодом, который предлагает функцию «Войти с помощью Эфириума» (Sign in with Ethereum), позволяющую пользователям аутентифицировать свою личность с помощью кошелька Эфириума.

## Связанные руководства {#related-tutorials}

- [Начните разработку фронтенда вашего dapp с помощью create-eth-app](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _— обзор того, как использовать create-eth-app для создания приложений с популярными смарт-контрактами без дополнительных настроек._

## Дополнительная литература {#further-reading}

_Знаете ресурс сообщества, который вам помог? Отредактируйте эту страницу и добавьте его!_

- [Композируемость — это инновации](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/)
- [Почему композируемость важна для Web3](https://hackernoon.com/why-composability-matters-for-web3)
- [Что такое композируемость?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.)