Перейти к основному содержанию
Change page

Введение в децентрализованные приложения

Последнее редактирование: @ViktorOn(opens in a new tab), 9 апреля 2024 г.

Децентрализованное приложение (dapp) — это приложение, построенное на децентрализованной сети, сочетающей в себе умный контракт и клиентскую сторону пользовательского интерфейса. Отметим, что в Ethereum умные контракты общедоступны и прозрачны (как открытые API), поэтому ваше приложение может содержать в себе умные контракты, которые были написаны другими людьми.

Прежде чем начать

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

Что такое децентрализованное приложение

У децентрализованного приложения есть бэкенд-код, который работает в децентрализованной одноранговой сети. Сравните это с приложением, бэкенд-код которого работает на централизованных серверах.

Децентрализованное приложение может иметь фронтенд-код и пользовательский интерфейс на любом языке (как и обычное приложение) для запросов к бэкенду. Более того, фронтенд может быть размещен в децентрализованном хранилище, таком как IPFS(opens in a new tab).

  • Децентрализованные: децентрализованные приложения работают в Ethereum — на открытой публичной децентрализованной платформе, над которой ни одно лицо или группа не имеет контроля
  • Детерминированные: децентрализованные приложения выполняют ту же функцию независимо от среды, в которой они выполняются
  • Полные по Тьюрингу: децентрализованные приложения могут выполнять любые действия при наличии необходимых ресурсов
  • Изолированные: децентрализованные приложения выполняются в виртуальной среде, известной как Ethereum Virtual Machine, и ошибка в умном контракте не помешает нормальному функционированию блокчейн-сети

Умные контракты

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

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

Преимущества разработки dapp

  • Нулевое время простоя. После развертывания умного контракта в блокчейне сеть в целом всегда сможет обслуживать клиентов, желающих взаимодействовать с контрактом. Следовательно, злоумышленники не смогут запускать атаки типа «отказ в обслуживании», направленные на отдельные децентрализованные приложения.
  • Конфиденциальность. Вам не нужно предоставлять свой реальные личные данные для использования или взаимодействия с dapp.
  • Устойчивость к цензуре. Абсолютно никто в сети не может блокировать отправку транзакций пользователями, написание ими децентрализованных приложений или чтение данных из блокчейна.
  • Обеспечение неприкосновенности данных. Данные, хранящиеся в блокчейне, неизменны и неоспоримы благодаря криптографическим примитивам. Злоумышленники не могут подделывать транзакции или другие данные, которые уже были опубликованы.
  • Вычисления, не требующие доверия, и проверяемое поведение. Умные контракты можно анализировать, и они гарантированно будут выполняться предсказуемым образом без необходимости доверять центральному органу. В традиционных моделях все обстоит иначе: например, при использовании системы онлайн-банкинга мы за неимением выбора должны доверять тому, что финансовые учреждения не будут злоупотреблять нашими финансовыми данными, изменять записи или взламывать наши аккаунты.

Недостатки разработки dapp

  • Обслуживание. Могут возникать трудности с поддержкой и обслуживанием децентрализованных приложений, так как код и данные, опубликованные в блокчейне, сложнее изменить. Разработчикам сложно обновлять свои децентрализованные приложения (или базовые данные, хранящиеся в децентрализованном приложении) после их развертывания, даже если в старой версии обнаружены ошибки или угрозы безопасности.
  • Расходы на производительность. Накладные расходы на производительность огромны, и масштабирование действительно затруднено. Чтобы достичь уровня безопасности, честности, прозрачности и надежности, к которому стремится Ethereum, каждый узел запускает и хранит каждую транзакцию. Кроме того, консенсус с доказательством владения также требует времени.
  • Перегрузка сети. Когда одно децентрализованное приложение использует слишком много вычислительных ресурсов, создается резервная копия всей сети. На текущий момент сеть может обрабатывать только около 10-15 транзакций в секунду; если транзакции отправляются быстрее, чем может обработать сеть, пул неподтвержденных транзакций может быстро увеличиться.
  • Удобство пользователя. Может быть сложнее добиться удобства пользователя, потому что среднестатическому пользователю может быть слишком сложно настроить стек инструментов, необходимый для действительно безопасного взаимодействия с блокчейном.
  • Централизация. Удобные для пользователя и разработчика решения, построенные на основе базового уровня Ethereum, в любом случае могут оказаться похожими на централизованные службы. Например, такие службы могут хранить ключи или другую важную информацию на стороне сервера, обслуживать интерфейс с использованием централизованного сервера или запускать важную бизнес-логику на централизованном сервере перед записью в блокчейн. Централизация сводит на нет многие (если не все) преимущества блокчейна в сравнении с традиционной моделью.

Больше любите видео?

Инструменты для создания децентрализованных приложений

Scaffold-ETH — быстрый опыт использования Solidity с помощью интерфейса, который адаптируется к вашему умному контракту.

Создание приложения Eth — создавайте приложения на базе Ethereum с помощью одной команды.

One Click Dapp — FOSS-инструмент для создания интерфейсов dapp с

.

Etherflow — FOSS-инструмент для разработчиков Ethereum, позволяющий тестировать свои узлы, а также составлять и отлаживать RPC-вызовы из браузера.

thirdweb – SDK на каждом языке, смарт-контракты, инструменты и инфраструктура для разработки Web3.

Дополнительные ресурсы

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

Была ли эта статья полезной?