Реализация аукциона NFT в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация аукциона NFT в мобильном приложении
Сложный
~5 дней
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация аукциона NFT в мобильном приложении

NFT-аукцион — это смарт-контракт с таймером. Владелец выставляет токен с начальной ценой и дедлайном. Покупатели делают ставки; каждая новая ставка блокирует ETH в контракте, а предыдущему участнику возвращаются средства. По истечению времени победитель забирает NFT, продавец — ETH.

На практике аукционный UX на мобильном — один из самых сложных в Web3: real-time обновление текущей ставки, таймер, конкурентные ставки (кто-то перебил за 3 секунды до конца), возврат средств. Каждый из этих сценариев нужно обрабатывать.

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

English Auction (открытый): ставки растут, побеждает максимальная к дедлайну. Самый распространённый.

Dutch Auction: цена начинается высокой и снижается со временем. Первый покупатель по текущей цене получает NFT. Прост в реализации, не требует ставок — только один вызов buy().

Reserve Price Auction: аукцион активируется только если хотя бы одна ставка превысила резервную цену. До этого ставки принимаются, но NFT не продаётся.

Real-time обновления: события смарт-контракта

Текущая ставка обновляется через событие BidPlaced(auctionId, bidder, amount). Слушай через WebSocket-RPC или polling через eth_getLogs.

// 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…), количество ставок. Анимация «перебили вашу ставку» — нотификация + визуальный сигнал в карточке.

Форма ставки

Поле ввода суммы с минимальным инкрементом: смарт-контракт обычно требует, чтобы новая ставка превышала текущую минимум на N% (например, 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 блокируется в контракте. Пользователь должен понимать: деньги заморожены до окончания аукциона или перебития ставки.

Таймер и anti-sniping

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

Многие аукционные контракты реализуют anti-sniping: если ставка сделана в последние X минут, дедлайн продлевается на Y минут. Показывай пользователю сообщение «Время продлено до HH:MM» при срабатывании.

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

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

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

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

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