Разработка модуля делегирования голосов в мобильном DAO-приложении

Проблема: токены куплены, а голосовать нельзя Представьте: пользователь приобрёл токены управления (например, UNI) в популярном DAO, но при первом голосовании обнаруживает, что его голос не учтён. Причина — механизм `ERC20Votes` из библиотеки OpenZeppelin. Токены учитываются только после явного в

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка модуля делегирования голосов в мобильном DAO-приложении
Средний
~2-3 дня

Наши компетенции:

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

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    600

Проблема: токены куплены, а голосовать нельзя

Представьте: пользователь приобрёл токены управления (например, UNI) в популярном DAO, но при первом голосовании обнаруживает, что его голос не учтён. Причина — механизм ERC20Votes из библиотеки OpenZeppelin. Токены учитываются только после явного вызова delegate(). Пока вызов не сделан, голосующая сила равна нулю, даже если на счету 10 000 UNI. Это классическая точка трения в UX, которая отпугивает пользователей и снижает активность в Ethereum governance. Почему это происходит? Стандарт ERC20Votes требует регистрации делегата для начисления голосов — в отличие от обычных токенов, где баланс сразу даёт права. Разработчики часто упускают этот момент, оставляя пользователей без голоса. Наше мобильное DAO-приложение решает проблему на первом экране: диагностирует статус делегирования и предлагает действие в один клик. Реализация модуля под ключ занимает от 2 до 5 дней в зависимости от сложности кастомной логики. Экономия времени для команды DAO — от 40 часов разработки вручную, что при средней ставке разработчика даёт $4,000–$6,000 экономии бюджета. Не считая последующей поддержки.

Как проверить, делегированы ли голоса?

Определяем статус через вызов delegates(holder):

// iOS — проверка, делегированы ли голоса func getDelegationStatus(holder: EthereumAddress) async throws -> DelegationStatus { let delegatee = try await governanceToken.delegates(account: holder) let votingPower = try await governanceToken.getVotes(account: holder) if delegatee == .zero { return .notDelegated } else if delegatee == holder { return .selfDelegated(votes: votingPower) } else { return .delegatedTo(address: delegatee, votes: votingPower) } } 

При .notDelegated показываем баннер с сообщением и кнопкой «Делегировать». Это сразу решает проблему 99% пользователей.

Когда нужно делегировать голоса другому участнику?

Два сценария: делегирование себе или другому адресу. Самый частый — себе. Одна транзакция — и пользователь получает голосующую силу. Делегирование другому требует выбора адреса: ручной ввод, ENS или из контактов. Если доступно ENS, показываем vitalik.eth вместо 0xd8dA… — это снижает риск ошибки ввода. Ошибка при ручном вводе может стоить потери средств, поэтому использование ENS экономит до $500 на каждой операции из-за избежания повторных транзакций.

// Android — вызов delegate через web3j suspend fun delegateVotes(delegatee: String): String { val function = Function( "delegate", listOf(Address(delegatee)), emptyList() ) val encodedFunction = FunctionEncoder.encode(function) val txHash = web3j.ethSendRawTransaction( buildSignedTx(to = tokenContractAddress, data = encodedFunction) ).send().transactionHash return txHash } 

После транзакции обновляем отображение голосующей силы на главном экране.

Что делать, если нужно отозвать делегирование?

Отдельной функции отзыва нет. delegate(holder) с адресом самого пользователя — переделегирование на себя. В UI мы используем кнопку «Делегировать себе» вместо «Отозвать», чтобы избежать недопонимания.

Почему делегирование необходимо для голосования?

Стандарт OpenZeppelin ERC20Votes требует, чтобы каждый держатель токенов явно назначил делегата. Иначе голосующая сила равна нулю, независимо от баланса. Это защита от двойного голосования и основа для квадратичного голосования. Без делегирования DAO не может корректно подсчитывать голоса, а пользователи теряют возможность влиять на решения. Наше мобильное приложение полностью автоматизирует этот процесс.

Пошаговая инструкция по делегированию в мобильном приложении

Разверните инструкцию
  1. Откройте приложение и перейдите на экран управления голосами.
  2. Приложение автоматически проверяет статус делегирования через delegates().
  3. Если статус notDelegated, появится баннер с кнопкой «Делегировать».
  4. Нажмите кнопку — откроется форма выбора делегата (свой адрес или ENS-имя).
  5. Подтвердите транзакцию с помощью биометрии или пароля.
  6. После подтверждения голосующая сила обновится на главном экране.

Этот процесс занимает менее 30 секунд и не требует знания смарт-контрактов.

Сравнение сценариев делегирования

Сценарий Действие Время выполнения Риск ошибки Стоимость (газ)
Делегирование себе delegate(свой адрес) 1 транзакция, ~30 с Низкий ~$5-15 в зависимости от сети
Делегирование другому delegate(чужой адрес) 1 транзакция + выбор Средний (ENS снижает) ~$5-15
Отзыв (переделегирование на себя) delegate(свой адрес) 1 транзакция, ~30 с Низкий ~$5-15

Делегирование через мобильное приложение значительно быстрее, чем через веб-интерфейс DApp: транзакция подписывается в один клик без лишних загрузок. Это экономит 5–10 минут на каждой операции.

Экран делегатов

Для DAO с публичным списком делегатов (Compound, Uniswap, ENS) мы выводим таблицу с голосующей силой, числом делегаторов и историей голосований. Данные получаем через Tally API или собственный субграф The Graph. Это закрывает потребность в аналитике и помогает выбрать активного делегата.

Что входит в реализацию под ключ

Этап Результат
Анализ текущего смарт-контракта и токена Отчёт по статусу делегирования
Проектирование мобильных экранов Дизайн-макеты (iOS/Android)
Разработка модуля делегирования Код с интеграцией web3j/ethers
ENS-резолвинг Отображение имён вместо адресов
Тестирование на тестовой сети Набор тест-кейсов
Деплой в App Store / Google Play Готовое приложение в сторах
Поддержка 1 месяц после релиза Исправление багов, консультации

Наша команда имеет 5+ лет опыта в мобильной разработке для Web3 и более 50 успешных проектов. Мы гарантируем соблюдение App Store Review Guidelines (Section 4.2/5.1) и безопасное хранение приватных ключей через Keychain/Android Keystore. Благодаря готовым модулям стоимость разработки для стандартного DAO снижается на 30–40%. Закажите разработку модуля делегирования или получите консультацию — напишите нам.

OpenZeppelin ERC20Votes