Разработка dApp (децентрализованного приложения) под ключ

Разрабатывая dApp, мы постоянно видим одну и ту же ошибку: команды пытаются перенести всю логику в смарт-контракты, забывая, что каждый байт стоит газа. Наш клиент хотел запустить NFT-маркетплейс и сначала заложил хранение метаданных в контракт — после оценки gas cost мы перепроектировали систему на

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Разрабатывая dApp, мы постоянно видим одну и ту же ошибку: команды пытаются перенести всю логику в смарт-контракты, забывая, что каждый байт стоит газа. Наш клиент хотел запустить NFT-маркетплейс и сначала заложил хранение метаданных в контракт — после оценки gas cost мы перепроектировали систему на гибридную архитектуру, сократив расходы на 60%. dApp (децентрализованное приложение) отличается от обычного веб-приложения не тем, что «использует блокчейн», а тем, что критическая бизнес-логика исполняется on-chain, и пользователь взаимодействует с ней напрямую через свой кошелёк, без посредника. Это принципиально другая архитектура: нет backend-сервера, который «владеет» данными, нет базы данных с балансами — только смарт-контракты и события.

Мы специализируемся на dApp-разработке более 10 лет, реализовали 50+ проектов — от DeFi-протоколов до игр. Используем актуальные версии инструментов и обеспечиваем аудит контрактов. Платформа Ethereum остаётся основным выбором для развёртывания смарт-контрактов, но мы также работаем с Polygon, Arbitrum и Solana. В одном из проектов мы уменьшили газовые расходы на 40% за счёт использования ERC-2612 Permit вместо стандартного approve.

Какой стек выбрать для dApp?

Первый честный вопрос — что должно быть on-chain, а что off-chain. Каждый байт в смарт-контракте стоит газа.

Архитектура On-chain Off-chain Когда выбирать
Полностью on-chain Логика и данные нет Финансовые примитивы (AMM, lending)
Гибрид Критическая логика UI, индексация, нотификации 90% dApps
Light dApp Только платежи/ownership Основной функционал Первая версия продукта

Стандартный стек: React 18 + TypeScript + Vite, Wagmi v2 + Viem для блокчейна, RainbowKit или ConnectKit для wallet connection, TanStack Query для кэширования. Для SSR — Next.js с осторожной настройкой server components. State management — Zustand или Jotai. Для смарт-контрактов используем Solidity 0.8.x с последними паттернами безопасности.

Как эффективно получать on-chain данные?

Multicall3 — упаковывает N вызовов в один RPC-запрос. Адрес 0xcA11bde05977b3631167028862bE2a173976CA11. Wagmi автоматически батчит useReadContracts через него. Multicall3 лучше последовательных вызовов до 5 раз по скорости — особенно заметно при загрузке балансов 10+ токенов.

const results = await client.multicall({ contracts: tokens.map(token => ({ address: token.address, abi: erc20Abi, functionName: 'balanceOf', args: [userAddress], })), }); 

Для исторических данных используйте The Graph (надёжно, но задержка несколько блоков), Alchemy/Moralis API (быстрый старт, дороже в масштабе) или собственный indexer (полный контроль, но затраты на инфраструктуру). Мы чаще выбираем The Graph для прототипов и собственный indexer для продакшена с высокой нагрузкой.

Инструмент Задержка Простота Стоимость масштабирования
The Graph 1–2 блоков Высокая Умеренная
Alchemy API Низкая (реалтайм) Очень высокая Высокая при больших объёмах
Собственный indexer Полный контроль Низкая (требует инфраструктуры) Средняя (нужен сервер)

Переключение сетей и RPC

Chain switching: автоматически предлагайте смену сети через useSwitchChain. Для новых сетей добавляйте через wallet_addEthereumChain. RPC resilience: настройте fallback transport с несколькими провайдерами — Alchemy primary, Infura secondary, public RPC tertiary.

SIWE (Sign-In with Ethereum) — аутентификация без пароля для off-chain компонентов (профили, настройки). Пользователь подписывает текстовое сообщение с nonce, backend верифицирует и выдаёт JWT. Это стандартный метод, одобренный EIP-4361.

const message = new SiweMessage({ domain: window.location.host, address: account.address, statement: 'Sign in with Ethereum to MyDApp.', uri: window.location.origin, version: '1', chainId: chain.id, nonce: await getNonce(), }); 

Как обеспечить плавный UX транзакций?

Транзакции — главный источник трения. Полный lifecycle: idle → signing → pending → confirming → success/error. Каждое состояние требует UI-обратной связи.

const { writeContractAsync, isPending } = useWriteContract(); const { isLoading: isConfirming, isSuccess } = useWaitForTransactionReceipt({ hash: txHash, }); 

Gas estimation: Viem по умолчанию использует EIP-1559. Показывайте fee в USD до подтверждения. Добавляйте 20% буфер к estimated gas — на практике это позволяет избежать до 40% ошибок типа 'out of gas'. Approve flow: для ERC-20 используйте Permit (EIP-2612) — одну подпись вместо двух транзакций. Если токен не поддерживает — точный approve на сумму операции.

Какие практики безопасности внедряем?

  • Приватные ключи никогда не попадают во фронтенд.
  • Адреса контрактов — из env, не хардкод.
  • Content Security Policy против XSS (может привести к краже средств).
  • Проверка chainId в каждой транзакции против replay attacks.
  • ENS resolution с обратным lookup.

Что входит в работу?

  • Архитектурное проектирование (on-chain/off-chain, стек).
  • Разработка смарт-контрактов на Solidity или Rust (Anchor), их тестирование (Foundry, Hardhat) и аудит.
  • Фронтенд на React/Next.js с интеграцией кошельков (RainbowKit).
  • Индексация данных (The Graph или собственный indexer).
  • Оптимизация газа (multicall, batched запросы, Permits).
  • Деплой, мониторинг, поддержка.
Этап Длительность Результат
Архитектура и спецификация 1–2 недели Документ с выбором стека и on-chain/off-chain границ
Разработка смарт-контрактов 2–4 недели Протестированные контракты на Foundry/Hardhat
Фронтенд и интеграция 2–3 недели React-приложение с подключением кошелька
Индексация и тестирование 1–2 недели The Graph subgraph или свой indexer
Аудит и деплой 1–2 недели Аудированный контракт на mainnet

Сроки: MVP — от 2 недель, полноценный продукт — 2–3 месяца. Стоимость рассчитывается индивидуально. Оценим ваш проект после знакомства с требованиями.

Свяжитесь с нами, чтобы обсудить задачу — мы поможем выбрать правильную архитектуру и избежать типовых ошибок. Закажите аудит контрактов для вашего dApp.