Розробка Telegram Mini App для tap-to-earn

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка Telegram Mini App для tap-to-earn
Середній
~2-4 тижні
Часті запитання

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

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1286
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка Telegram Mini App для tap-to-earn

Notcoin у 2024 показав, що Telegram Mini App може зібрати аудиторію в десятки мільйонів користувачів через найпростішу механіку: нажимати кнопку, заробляти монети. Після нього хвиля: Hamster Kombat, Blum, Major — кожен зі своїми варіаціями. Tap-to-earn — це не про глибоку геймплей механіку, це про virality, retention та ефективний onboarding у TON екосистему.

Технічно: React додаток всередину Telegram WebApp, backend на Node.js/Go, TON Connect для кошелька, off-chain зберігання монет з on-chain конвертацією при лістингу.

Telegram Mini App: технічний фундамент

Telegram надає window.Telegram.WebApp — об'єкт з даними користувача і методами управління інтерфейсом. Аутентифікація через initData — рядок, який Telegram передає в момент відкриття додатку.

const tg = window.Telegram.WebApp
tg.ready()  // повідомляємо Telegram, що app готовий
tg.expand() // розворачиваємо на весь екран

const user = tg.initDataUnsafe.user
// { id: 123456789, first_name: "Ivan", username: "ivan_user", ... }

// ВАЖЛИВО: initDataUnsafe — непровірені дані на клієнті
// Для backend запитів передаємо tg.initData (рядок з підписом)

Backend верифікація:

import { createHmac } from 'crypto'

function verifyTelegramAuth(initData: string, botToken: string): boolean {
    const params = new URLSearchParams(initData)
    const hash = params.get('hash')
    params.delete('hash')

    // Сортуємо і конкатенуємо
    const dataCheckString = Array.from(params.entries())
        .sort(([a], [b]) => a.localeCompare(b))
        .map(([k, v]) => `${k}=${v}`)
        .join('\n')

    const secretKey = createHmac('sha256', 'WebAppData').update(botToken).digest()
    const expectedHash = createHmac('sha256', secretKey)
        .update(dataCheckString).digest('hex')

    return hash === expectedHash
}

Ця верифікація обов'язкова на кожному backend запиті. Без неї будь-який користувач може підробити user.id і вкрасти чужі монети.

Tap механіка і оптимізація продуктивності

Tap = подія на frontend → відправити монети на backend. Наївний підхід: кожний tap = HTTP запит. При 10 tap/сек × 100k одночасних = 1M RPS. Це нереально.

Batching тапів. Клієнт накопичує тапи локально, відправляє батч кожні 2-5 секунд:

class TapBatcher {
    private pendingTaps = 0

    tap(count: number = 1) {
        this.pendingTaps += count
        // Immediate optimistic UI update
    }

    async flush() {
        if (this.pendingTaps === 0) return
        const toSend = this.pendingTaps
        this.pendingTaps = 0

        try {
            await api.post('/taps', { userId: this.userId, count: toSend })
        } catch {
            this.pendingTaps += toSend
        }
    }
}

Optimistic UI. Монети оновлюються одразу, без очікування backend. Feel критичний.

Energy система. Обмеження тапів через energy pool: 1 energy за tap, N energy regen/годину. Одночасно game mechanic і rate limiter.

Backend архітектура під високу нагрузку

Тисячі одночасних користувачів при запуску.

Redis для real-time стану. Всі ігрові дані в памяті: balance:{userId}, energy:{userId}, lastTap:{userId}. Lua script для атомарного оновлення:

local energy = tonumber(redis.call('GET', KEYS[1])) or 1000
local taps = tonumber(ARGV[1])
local energyCost = taps

if energy < energyCost then
    return {0, energy}
end

redis.call('DECRBY', KEYS[1], energyCost)
redis.call('INCRBY', KEYS[2], taps * tonumber(ARGV[2]))

return {1, energy - energyCost}

Lua виконується атомарно в Redis — race condition виключений.

PostgreSQL для persistence. Періодично (кожні N хвилин або по подієї) записуємо Redis дані в PostgreSQL. При перезавантажуванні — восстановлюємо з БД в Redis.

TON Connect і конвертація монет

Click-монети існують off-chain. Конвертація у реальні TON токени — при TGE або по розписанню.

import { TonConnectUI } from '@tonconnect/ui-react'

const tonConnect = new TonConnectUI({
    manifestUrl: 'https://your-app.com/tonconnect-manifest.json'
})

async function claimTokens(userId: number) {
    const claimData = await api.post('/prepare-claim', { userId })

    await tonConnect.sendTransaction({
        validUntil: Math.floor(Date.now() / 1000) + 300,
        messages: [{
            address: CLAIM_CONTRACT_ADDRESS,
            amount: '50000000',
            payload: claimData.payload,
        }]
    })
}

TON Jetton (ERC-20 аналог) — стандарт для fungible токенів. Claim контракт верифікує підпис backend, мінтить Jettons.

Вірусні механіки і реферальна система

Tap-to-earn без virality вмирає швидко. Реферальна система обов'язкова:

Реферальний код: deep link https://t.me/YourBot?startapp=ref_userId. При першому запуску з цим параметром: користувач пов'язаний з рефереру, обидва отримують бонус.

Багаторівневі реферальні програми. Hamster Kombat: 25k монет за друга, 10% за кожний tap друга. Експоненціальний ріст, але і експоненціальна інфляція.

Daily missions + combo. Щоденні задання (підписка на канал, упоминання, запросити X друзів) дають бонусні монети. Combo — вгадати правильну комбінацію карточок за бонус.

Безпека і anti-cheat

Rate limiting по userId. Максимум N батчів/сек. Навіть з batching, автоматизація може відправляти занадто часто.

Energy ceiling. Сервер зберігає timestamp останнього energy update. Максимальна накопичена енергія обмежена фізично. Клієнт не може заявити більше ніж дозволяє час.

Підозрілі паттерни. Якщо tap rate > фізично можливого (>15 tap/сек стабільно) → флаг. Ботів виявляють і банять.

Bot detection через Telegram дані. Аккаунти без username, без фото, створені недавно — зважуються нижче.

Стек

Компонент Технології
Frontend React + TypeScript + Vite
UI Tailwind + Framer Motion
Backend Node.js (Fastify) або Go
Real-time стан Redis + Lua scripts
Database PostgreSQL
TON інтеграція TON Connect UI + @ton/core
Smart contracts Tact (FunC wrapper)
Deploy Docker + Nginx / Coolify

Процес розробки

Game design + tokenomics (1 тиждень). Energy система, reward per tap, реферальна структура, вірусні механіки.

Backend + Telegram auth (1-2 тижні). initData верифікація, Redis tap pipeline, енергія, реферальна.

Frontend Mini App (1-2 тижні). Tap інтерфейс з анімаціями, energy індикатор, leaderboard, referral onboarding.

TON інтеграція (1 тиждень). TonConnect підключення, Jetton контракт, claim.

Тестування і launch (1 тиждень). Нагрузкове тестування Redis pipeline, anti-cheat тест, soft launch.

Мінімальний tap-to-earn без TON — 3-4 тижні. З TON токеном, реферальною системою та повним anti-cheat — 6-8 тижнів.