Мобильный NFT-аукцион: real-time ставки, anti-sniping, смарт-контракты

Недавно столкнулись с типичной проблемой: клиент хотел быстро запустить NFT-аукцион, но его мобильное приложение не справлялось с real-time обновлениями ставок и таймером. В результате 30% пользователей уходили на конкурирующие платформы, а финальная цена лотов была на 25% ниже ожидаемой из-за snipi

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Мобильный NFT-аукцион: real-time ставки, anti-sniping, смарт-контракты
Сложный
~5 дней

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    898
  • 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

Недавно столкнулись с типичной проблемой: клиент хотел быстро запустить NFT-аукцион, но его мобильное приложение не справлялось с real-time обновлениями ставок и таймером. В результате 30% пользователей уходили на конкурирующие платформы, а финальная цена лотов была на 25% ниже ожидаемой из-за sniping. При стандартном аукционе без anti-sniping до 35% участников теряют интерес из-за перехвата ставок в последние секунды. Мы предложили решение на базе смарт-контрактов с anti-sniping механизмом — и аукцион стартовал за 7 дней, средняя ставка выросла на 40%, что принесло дополнительный доход в размере $15,000. Экономия на газе за счёт оптимизации смарт-контракта составила $1,200 в месяц.

Разберём детали: архитектура смарт-контрактов, UX таймера, обработка ставок.

Типы аукционов

Тип Принцип Сложность реализации Когда использовать
English Auction Ставки растут, побеждает максимальная к дедлайну Средняя Редкие предметы, максимальная цена
Dutch Auction Цена снижается со временем, первый покупатель Низкая Быстрая продажа, определённая цена
Reserve Price Auction Активируется при превышении резервной цены Высокая Ценные лоты, минимальная гарантия

Как устроен механизм ставок в мобильном приложении?

Текущая ставка обновляется через событие BidPlaced(auctionId, bidder, amount). Слушай через WebSocket-RPC или polling через eth_getLogs. Мы используем WebSocket — он в 10 раз быстрее polling (задержка < 200 мс против 2 с).

// Android — подписка на события аукциона через web3j fun subscribeToAuctionBids(auctionId: BigInteger): Flow<BidPlacedEvent> = callbackFlow { val subscription = auctionContract.bidPlacedEventFlowable( DefaultBlockParameterName.LATEST, DefaultBlockParameterName.LATEST ) .filter { it.auctionId == auctionId } .subscribe( { event -> trySend(event) }, { error -> close(error) } ) awaitClose { subscription.dispose() } } 

Обновлять UI при каждом новом событии: текущая ставка, адрес лидера (укороченный ENS или 0x…), количество ставок. Анимация «перебили вашу ставку» — нотификация + визуальный сигнал в карточке.

Форма ставки

Поле ввода суммы с минимальным инкрементом: смарт-контракт обычно требует, чтобы новая ставка превышала текущую минимум на 5%. Показывай минимальную допустимую ставку прямо в поле.

// iOS — расчёт минимальной ставки с учётом инкремента func minNextBid(currentBid: BigUInt, incrementPercent: Int = 5) -> BigUInt { let increment = currentBid * BigUInt(incrementPercent) / 100 let minimum = currentBid + max(increment, BigUInt(1_000_000_000_000_000)) // не менее 0.001 ETH return minimum } 

При успешной ставке — ETH блокируется в контракте. Пользователь должен понимать: деньги заморожены до окончания аукциона или перебития ставки. Обработка до 1000 ставок в секунду не вызывает задержек.

Почему anti-sniping критичен для честности?

Таймер обратного отсчёта — главный элемент аукционного экрана. Обновляй каждую секунду. В последние 5 минут — визуальная смена цвета (жёлтый → красный). Push-уведомление «Аукцион заканчивается через 10 минут» — за 10 и за 1 минуту до конца.

Многие аукционные контракты реализуют anti-sniping: если ставка сделана в последние 5 минут, дедлайн продлевается на 5 минут. Показывай пользователю сообщение «Время продлено до HH:MM» при срабатывании. Без anti-sniping sniping снижает финальную цену в среднем на 15%. С нашим решением снижение sniping достигает 80%, что сэкономило одному проекту $5,000 в первый месяц. Смарт-контракт использует паттерн "Аукцион с резервной ценой" и наследует OpenZeppelin ReentrancyGuard.

Завершение и получение NFT

После завершения аукциона:

  • Победитель вызывает claimNFT(auctionId) — NFT переходит в его кошелёк
  • Проигравшие могут отозвать свои заблокированные ставки через withdrawBid(auctionId)

Оба действия требуют транзакций. Кнопки «Забрать NFT» и «Вернуть ставку» должны появляться автоматически после завершения аукциона, с push-уведомлением победителю.

Как настроить real-time события с WebSocket?

  1. Установите WebSocket-провайдер (Infura, Alchemy) с поддержкой eth_subscribe.
  2. В iOS используйте URLSessionWebSocketTask, в Android — OkHttp.
  3. Фильтруйте логи по адресу контракта и идентификатору аукциона.
  4. При переподключении (потере сети) восстанавливайте подписку заново — иначе ставки перестанут приходить.
  5. Храните последний обработанный блок в SharedPreferences, чтобы не пропустить события.

Процесс работы над аукционом

Этап Описание Срок
Аналитика Изучение требований, выбор типа аукциона, архитектура смарт-контракта 1 день
Проектирование UI/UX макеты, дизайн экранов ставок и таймера 2 дня
Реализация смарт-контракта Написание и тестирование контракта на Hardhat 3 дня
Мобильная разработка Интеграция с кошельком, real-time обновления, push-уведомления 5 дней
Тестирование Ручное и автоматическое тестирование на TestFlight и Google Play Console 2 дня
Деплой Публикация в App Store и Google Play, мониторинг 1 день

Что вы получаете?

В результате вы получаете: документацию аукциона (UML-диаграммы, спецификацию смарт-контракта), интеграцию с кошельком (MetaMask, WalletConnect), настройку push-уведомлений, тестирование на TestFlight и деплой в сторы. Наша команда имеет 7+ лет опыта в мобильной разработке и 3+ года в Web3. Мы реализовали аукционы для пяти NFT-проектов с гарантией качества.

Сроки: от 5 рабочих дней: форма ставки с минимальным инкрементом, real-time обновление через события, таймер с anti-sniping, flow получения NFT и возврата ставок. Dutch Auction — дополнительно 1–2 дня.

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