Техническое введение в dapps
Децентрализованное приложение (dapp) — это приложение, созданное в децентрализованной сети, которое объединяет смарт-контракт и пользовательский интерфейс (фронтенд). В Эфириуме смарт-контракты доступны и прозрачны (как открытые API), поэтому ваше dapp может даже включать смарт-контракт, написанный кем-то другим.
Предварительные требования
Прежде чем изучать dapps, вам следует ознакомиться с основами блокчейна и прочитать о сети Эфириум и о том, как она децентрализована.
Определение dapp
Бэкенд-код dapp работает в децентрализованной одноранговой сети. Сравните это с обычным приложением, где бэкенд-код работает на централизованных серверах.
Dapp может иметь фронтенд-код и пользовательские интерфейсы, написанные на любом языке (как и обычное приложение), для выполнения вызовов к своему бэкенду. Кроме того, его фронтенд может быть размещен в децентрализованном хранилище, таком как IPFS (opens in a new tab).
- Децентрализованность — dapps работают в Эфириуме, открытой публичной децентрализованной платформе, которую не контролирует ни один человек или группа лиц.
- Детерминированность — dapps выполняют одну и ту же функцию независимо от среды, в которой они выполняются.
- Тьюринг-полнота — dapps могут выполнять любое действие при наличии необходимых ресурсов.
- Изолированность — dapps выполняются в виртуальной среде, известной как виртуальная машина Эфириума (EVM), поэтому, если в смарт-контракте есть ошибка, она не помешает нормальному функционированию сети блокчейна.
О смарт-контрактах
Чтобы представить dapps, нам нужно представить смарт-контракты — бэкенд dapp, за неимением лучшего термина. Для подробного ознакомления перейдите в наш раздел о смарт-контрактах.
Смарт-контракт — это код, который находится в блокчейне Эфириума и выполняется точно так, как запрограммировано. Как только смарт-контракты развернуты в сети, вы не можете их изменить. Dapps могут быть децентрализованными, потому что они управляются логикой, записанной в контракте, а не отдельным лицом или компанией. Это также означает, что вам нужно очень тщательно проектировать свои контракты и тщательно их тестировать.
Преимущества разработки dapp
- Нулевое время простоя — как только смарт-контракт развернут в блокчейне, сеть в целом всегда сможет обслуживать клиентов, желающих взаимодействовать с контрактом. Следовательно, злоумышленники не могут запускать атаки типа «отказ в обслуживании» (DDoS), направленные на отдельные dapps.
- Приватность — вам не нужно предоставлять реальные личные данные для развертывания или взаимодействия с dapp.
- Устойчивость к цензуре — ни одна организация в сети не может заблокировать пользователям отправку транзакций, развертывание dapps или чтение данных из блокчейна.
- Полная целостность данных — данные, хранящиеся в блокчейне, являются неизменяемыми и неоспоримыми благодаря криптографическим примитивам. Злоумышленники не могут подделать транзакции или другие данные, которые уже были обнародованы.
- Вычисления, не требующие доверия / проверяемое поведение — смарт-контракты можно проанализировать, и они гарантированно будут выполняться предсказуемым образом без необходимости доверять центральному органу. Это не так в традиционных моделях; например, когда мы используем системы онлайн-банкинга, мы должны доверять финансовым учреждениям в том, что они не будут злоупотреблять нашими финансовыми данными, подделывать записи или не будут взломаны.
Недостатки разработки dapp
- Обслуживание — dapps может быть сложнее поддерживать, поскольку код и данные, опубликованные в блокчейне, сложнее изменить. Разработчикам трудно вносить обновления в свои dapps (или базовые данные, хранящиеся в dapp) после их развертывания, даже если в старой версии обнаружены ошибки или риски безопасности.
- Издержки производительности — существует огромная нагрузка на производительность, и масштабирование действительно затруднено. Чтобы достичь уровня безопасности, целостности, прозрачности и надежности, к которому стремится Эфириум, каждый узел выполняет и сохраняет каждую транзакцию. Вдобавок ко всему, консенсус доказательства доли владения (PoS) также требует времени.
- Перегрузка сети — когда одно dapp использует слишком много вычислительных ресурсов, вся сеть начинает тормозить. В настоящее время сеть может обрабатывать только около 10-15 транзакций в секунду; если транзакции отправляются быстрее, пул неподтвержденных транзакций может быстро раздуться.
- Пользовательский опыт — может быть сложнее создать удобный интерфейс, потому что среднему конечному пользователю может показаться слишком сложным настроить стек инструментов, необходимый для действительно безопасного взаимодействия с блокчейном.
- Централизация — удобные для пользователей и разработчиков решения, созданные поверх базового уровня Эфириума, в конечном итоге могут выглядеть как централизованные сервисы. Например, такие сервисы могут хранить ключи или другую конфиденциальную информацию на стороне сервера, обслуживать фронтенд с использованием централизованного сервера или выполнять важную бизнес-логику на централизованном сервере перед записью в блокчейн. Централизация устраняет многие (если не все) преимущества блокчейна по сравнению с традиционной моделью.
Лучше воспринимаете визуальную информацию?
Инструменты для создания dapps
Scaffold-ETH — быстро экспериментируйте с Solidity, используя фронтенд, который адаптируется к вашему смарт-контракту.
Create Eth App — создавайте приложения на базе Эфириума с помощью одной команды.
One Click Dapp — бесплатный инструмент с открытым исходным кодом (FOSS) для генерации фронтендов dapp из .
Etherflow — FOSS-инструмент для разработчиков Эфириума, позволяющий тестировать свой узел, а также составлять и отлаживать RPC-вызовы прямо из браузера.
thirdweb — SDK на любом языке, смарт-контракты, инструменты и инфраструктура для разработки Web3.
Crossmint — платформа разработки Web3 корпоративного уровня для развертывания смарт-контрактов, подключения платежей по кредитным картам и кроссчейн-платежей, а также использования API для создания, распространения, продажи, хранения и редактирования NFT.
Дополнительная литература
- Изучить dapps
- Архитектура приложения Веб 3.0 (opens in a new tab) — Прити Касиредди (Preethi Kasireddy)
- Руководство по децентрализованным приложениям 2021 года (opens in a new tab) — LimeChain
- Что такое децентрализованные приложения? (opens in a new tab) — Gemini
- Популярные dapps (opens in a new tab) — Alchemy
Знаете ресурс сообщества, который вам помог? Отредактируйте эту страницу и добавьте его!
Похожие темы
Руководства: создание приложений и фронтендов в Эфириуме
- Пошаговое руководство по контрактам Юнисвоп v2 — аннотированное пошаговое руководство по основным контрактам Юнисвоп v2, объясняющее, как работает автоматизированный маркетмейкер (AMM).
- Создание пользовательского интерфейса для вашего контракта — как создать современный фронтенд на React + Wagmi, который подключается к вашему смарт-контракту.
- Смарт-контракт Hello World для начинающих — Fullstack — сквозное руководство: напишите, разверните и создайте фронтенд для простого смарт-контракта.
- Серверные компоненты и агенты для приложений Web3 — как писать серверные компоненты на TypeScript, которые прослушивают события блокчейна и отвечают транзакциями.
- IPFS для децентрализованных пользовательских интерфейсов — как разместить фронтенд вашего dapp в IPFS для обеспечения устойчивости к цензуре.