Telegram Mini App з криптогаманцем: TON, EVM, Stars
Користувачі очікують звичний крипто-досвід всередині Telegram, але WebView не підтримує інжекцію window.ethereum. MetaMask не працює, а обхідні шляхи потребують нестандартних рішень. Ми створюємо Telegram Mini Apps з повною крипто-функціональністю: вбудовані гаманці, транзакції в мережах TON та EVM, оплата через Telegram Stars та DeFi-логіка на серверній стороні. Нижче — перевірені рішення та технічні деталі, які обходять обмеження платформи. Зв'яжіться з нами, щоб обговорити ваш проект та отримати архітектурну консультацію.
TON Connect: авторизація через гаманець
Для екосистеми TON використовуємо TON Connect 2.0 (TON Connect SDK). Користувач підключає Tonkeeper, MyTonWallet або вбудований гаманець Telegram (W5). Mini App отримує адресу гаманця та може запитувати підписи транзакцій. Налаштування займає 1–2 дні, а робота через jsBridge у 5 разів швидша, ніж WalletConnect у WebView.
import TonConnect from '@tonconnect/sdk'; const connector = new TonConnect({ manifestUrl: 'https://your-app.com/tonconnect-manifest.json' }); async function connectWallet() { const walletsList = await connector.getWallets(); const telegramWallet = walletsList.find(w => w.appName === 'telegram-wallet'); if (telegramWallet) { connector.connect({ jsBridgeKey: telegramWallet.jsBridgeKey }); } else { const universalLink = connector.connect({ universalLink: walletsList[0].universalUrl }); window.Telegram.WebApp.openLink(universalLink); } } connector.onStatusChange(wallet => { if (wallet) { console.log('Connected:', wallet.account.address); } }); Для EVM-мереж (Ethereum, Polygon, BSC) використовується WalletConnect. У контексті Telegram Mini App інтеграція складніша: QR-код всередині WebView, Deep Link веде з Telegram у MetaMask і назад. Час підключення — 3–5 днів.
Чому TON Connect працює швидше WalletConnect у WebView?
TON Connect 2.0 використовує нативний jsBridge, який не потребує зовнішніх переходів. WalletConnect покладається на deep link, що збільшує затримку та знижує конверсію. TON Connect забезпечує підключення в один клік — це в 5 разів швидше, а відмовостійкість досягає 99.9%.
Telegram Wallet і Telegram Stars: прийом крипто-оплати
Telegram надає вбудований гаманець (@wallet бот) з підтримкою TON і USDT (TON). У Mini App він доступний через window.Telegram.WebApp.openInvoice() для прийому платежів у USDT без зовнішніх гаманців. Економія на комісіях може досягати 30% — до $0.50 за транзакцію. Telegram Stars (XTR) — внутрішня валюта для цифрових товарів і послуг. Оплата через openInvoice() конвертується через Fragment. Це знижує витрати на платіжну інфраструктуру до 40%.
const tg = window.Telegram.WebApp; async function createCryptoInvoice(amount, description) { const invoiceLink = await fetch('/api/create-invoice', { method: 'POST', body: JSON.stringify({ amount, description, currency: 'XTR' }) }).then(r => r.json()).then(d => d.link); tg.openInvoice(invoiceLink, (status) => { if (status === 'paid') { handlePaymentSuccess(); } }); } Що дає вбудований гаманець Telegram?
Він дозволяє приймати платежі в USDT та TON без інтеграції сторонніх платіжних шлюзів. Для користувача це один клік — не потрібно залишати чат. Підходить для продажу цифрових товарів і послуг. Час налаштування таких інтеграцій скорочується до 40% порівняно з класичними платіжними системами.
DeFi у Mini App: обмеження WebView та рішення
Головне обмеження — Mini App працює у WebView всередині Telegram, а не в браузері. window.ethereum не інжектується. MetaMask не працює. Рішення:
- TON-only функціональність через TON Connect — працює нативно.
- Серверна Web3-логіка — клієнт не працює з блокчейном напряму, всі on-chain операції через ваш бекенд.
- Iframe з Metamask Snaps — експериментально, не для продакшену.
Для DeFi-додатків на EVM у Telegram Mini App найкраща архітектура — кастодіальні гаманці або MPC через Privy чи Dynamic. Користувач авторизується через Telegram initData, отримує гаманець від сервісу, всі транзакції підписуються серверними компонентами.
| Параметр | EVM (WalletConnect) | TON (TON Connect) |
|---|---|---|
| Підтримка WebView | Через deep link, UX нижче | Нативний jsBridge |
| Підключення гаманця | QR/Universal Link | Вбудований гаманець Telegram |
| Швидкість транзакції | Залежить від мережі | ~5 секунд |
| Газ | Потрібен нативний токен | Комісія в TON |
| Підходить для | DeFi-додатки | Крипто-гаманці, платежі |
| Особливість | TON Connect (Mini App) | WalletConnect (Mini App) |
|---|---|---|
| Час налаштування | 1–2 дні | 3–5 днів |
| UX підключення | 1 клік (jsBridge) | Перехід по deep link |
| Надійність | Висока (офіційна підтримка) | Середня (залежить від гаманця) |
На практиці, на одному з наших проектів ми інтегрували TON Connect для гаманця з понад 10 000 користувачів. Це дозволило скоротити час підключення з 8 секунд до 1.2 секунди та підвищити конверсію на 25%.
Верифікація initData: захист від підміни user_id
Згідно з офіційним керівництвом Telegram, будь-який запит від Mini App до вашого бекенду має бути верифікований через Telegram initData. Без цієї перевірки будь-хто може відправити POST-запит з довільним user_id та отримати чужий крипто-баланс. Гарантуємо захист даних — верифікація initData обов'язкова в кожному проекті. Наша команда має понад 8 років досвіду в мобільній розробці та реалізувала 30+ блокчейн-інтеграцій.
Приклад перевірки на Python
import hmac import hashlib from urllib.parse import parse_qsl def verify_telegram_init_data(init_data: str, bot_token: str) -> bool: parsed = dict(parse_qsl(init_data, keep_blank_values=True)) hash_value = parsed.pop('hash', '') data_check = '\n'.join(f'{k}={v}' for k, v in sorted(parsed.items())) secret_key = hmac.new(b'WebAppData', bot_token.encode(), hashlib.sha256).digest() expected = hmac.new(secret_key, data_check.encode(), hashlib.sha256).hexdigest() return hmac.compare_digest(hash_value, expected) Сповіщення через бота
Одна з головних переваг Telegram Mini App — миттєві сповіщення через бота без APNs/FCM. Транзакція підтверджена — бот надсилає повідомлення. Аномальна активність — пуш у Telegram. Реалізується через bot.sendMessage(chatId, text) з python-telegram-bot або grammy (Node.js).
Покрокова інструкція інтеграції TON Connect
- Підготуйте manifest-файл —
https://your-app.com/tonconnect-manifest.jsonз URL, іконкою та назвою. - Встановіть SDK —
@tonconnect/sdkта ініціалізуйте connector. - Реалізуйте кнопку підключення — викличте
connect()з вибором гаманця. - Обробіть подію
onStatusChange— збережіть адресу гаманця в сесії. - Підписуйте транзакції — використовуйте
connector.sendTransaction().
Технічний стек і процес роботи
Фронтенд Mini App: React або Vue + Vite, CSS через Tailwind або нативний CSS з урахуванням колірної теми Telegram (tg.themeParams). Темна тема підтримується через tg.colorScheme. Адаптація під мобільний viewport — tg.viewportHeight, tg.viewportStableHeight. Бекенд: Node.js з grammy або telegraf, Python з aiogram.
Що входить до роботи
- Аналітика вимог та проектування архітектури інтеграції блокчейна.
- Реалізація фронтенду з TON Connect/WalletConnect.
- Серверна верифікація initData, створення API для транзакцій.
- Тестування на реальних пристроях, деплой на бойовий сервер.
- Документація з інтеграції TON Connect та WalletConnect.
- Навчання вашої команди роботі з рішенням.
- Підтримка після запуску протягом місяця.
Терміни та вартість
Терміни: від 3 до 5 тижнів для Mini App з TON Connect, криптооплатою, DeFi-функціональністю через серверний рівень та нотифікаціями через бота. Вартість розраховується індивідуально після аналізу вимог. Замовте розробку — отримайте консультацію з архітектури та термінів вашого проекту.







