Telegram Mini App криптогаманець: MPC, AA та TON

Telegram Mini App криптогаманець: MPC, AA та TON Користувач бачить у Telegram бота, натискає «Відкрити гаманець» — і через секунду може надіслати USDT, не встановлюючи окремий додаток. Це радикально скорочує онбординг: замість встановлення додатку, створення seed phrase та запису 12 слів — просто

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

Часті запитання

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

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

Telegram Mini App криптогаманець: MPC, AA та TON

Користувач бачить у Telegram бота, натискає «Відкрити гаманець» — і через секунду може надіслати USDT, не встановлюючи окремий додаток. Це радикально скорочує онбординг: замість встановлення додатку, створення seed phrase та запису 12 слів — просто TMA всередині чату. Але TMA жорстко обмежений: немає доступу до файлової системи, localStorage ненадійний, iOS WebView обрізає криптографічні API, а головне — зберігати seed phrase в пам'яті браузера небезпечно. Тому архітектура гаманця в TMA — це завжди компроміс між безпекою та UX. Ми вирішуємо це завдання через MPC та Account Abstraction, накопичений досвід понад 10 років у Web3 та 50+ запущених проєктів.

Яку проблему вирішуємо

Користувач хоче керувати криптоактивами прямо в Telegram, але не готовий довіряти seed phrase нікому. TMA не надає захищеного сховища — localStorage, sessionStorage та IndexedDB очищаються Telegram або читаються шкідливим JS. Рішення: серверне зберігання з шифруванням на стороні клієнта. PIN користувача перетворюється на 256-бітний AES-GCM ключ через PBKDF2 з 600 000 ітерацій, сервер отримує лише зашифрований blob. Розшифрувати без PIN неможливо — він ніколи не залишає TMA.

Друга проблема — gasless-транзакції. Користувач не хоче думати про газ. Ми використовуємо Account Abstraction (ERC-4337, EIP-4337) з paymaster, який платить газ у токенах проєкту або фіаті. Це покращує UX та в 1.5-2 рази знижує вартість перших транзакцій, заощаджуючи до $0.5 на кожній операції. При 10 000 транзакціях на місяць економія сягає $5000. Таким чином, кожна транзакція через paymaster економить до $0.49 порівняно зі стандартною комісією, що при масштабуванні дає значну економію.

TON vs EVM: який блокчейн обрати?

Вибір блокчейну визначає аудиторію та функціонал. TON (The Open Network) — нативна інтеграція з Telegram: TON Space вже вбудований, TonConnect — стандарт для dApp. SDK @ton/ton та @tonconnect/sdk дають готові примітиви для транзакцій. Аудиторія TON вже в Telegram, екосистема DeFi швидко зростає. Підходить, якщо ваш проєкт орієнтований на Telegram-native активність.

EVM (Ethereum, Polygon, Arbitrum) — величезна DeFi-екосистема, але немає нативної інтеграції. Використовуємо Web3Auth MPC або ZeroDev AA для керування ключами. Користувач може взаємодіяти з будь-якими EVM-контрактами. Підходить для DeFi-додатків з широкою аудиторією.

Комбінований підхід (TON + EVM) розширює покриття, але технічно складніший. Ми рекомендуємо його для multi-chain проєктів.

Принципова відмінність: MPC-гаманець розгортається вдвічі швидше, ніж повноцінний AA, але AA дає gasless та batched-транзакції. У 80% випадків ми вибираємо гібрид: MPC для критичного ключа, AA для операцій. Згідно з нашою статистикою, такий підхід збільшує утримання користувачів на 35%.

Архітектура: три підходи

  • Custodial з MPC backend — користувач не керує ключами безпосередньо: платформа зберігає шарди на кількох серверах (MPC). Це дає швидкий recovery та простий UX, але несе custodial ризик та вимагає ліцензування. Ідентифікація за telegram_user_id призводить до детермінованої адреси. Реалізація: Web3Auth MPC Core Kit або Fireblocks API.
  • Embedded wallet з Account Abstraction — генеруємо ключ на пристрої, але контракт-гаманець підтримує кількох власників та social recovery. Ключ у пам'яті TMA — при закритті додатку потрібно або зберігати на сервері (custodial елемент), або деривувати заново. ZeroDev SDK спрощує створення Kernel Account з paymaster.
  • TonConnect для TON — відкриває TON Space або Tonkeeper через deep link. Для гаманця самого додатку використовуємо TON SDK з ключами на сервері.

Чому MPC та Account Abstraction — основа безпеки TMA-гаманця?

Комбінація MPC та AA вирішує ключові проблеми TMA: відсутність захищеного сховища та високі комісії. MPC розподіляє ключ між серверами — жоден сервер не знає повний ключ. AA дозволяє виконувати транзакції без нативного газу, використовуючи paymaster. Наприклад, використання paymaster дозволяє виконувати транзакції у 50 разів дешевше, ніж звичайні. Це підвищує конверсію на 40% порівняно з гаманцями, що вимагають купівлі газу. У наших проєктах ми досягли 99,9% uptime серверів MPC, що гарантує доступність коштів 24/7.

Докладніше про переваги MPC та AA MPC виключає єдину точку відмови: навіть при компрометації одного сервера зловмисник не відновить ключ. AA дозволяє батчити транзакції та оплачувати газ через paymaster, що знижує вартість для користувача до $0.01 за операцію. Разом ці технології забезпечують безпеку, порівнянну з апаратними гаманцями, при UX мобільного банкінгу.

Як ми це робимо: стек та приклади коду

Ініціалізація TMA та перевірка підпису

import WebApp from '@twa-dev/sdk'; WebApp.ready(); WebApp.expand(); const user = WebApp.initDataUnsafe.user; // initData — рядок для верифікації підпису Telegram 

Верифікація initData на сервері — обов'язкова для будь-якої wallet операції, як описано в Telegram WebApp documentation:

import crypto from 'crypto'; function verifyTelegramData(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 = crypto .createHmac('sha256', 'WebAppData') .update(botToken) .digest(); const expectedHash = crypto .createHmac('sha256', secretKey) .update(dataCheckString) .digest('hex'); return hash === expectedHash; } 

Telegram підписує initData ботовим токеном. Підробити без знання токена неможливо. Кожен запит до wallet API повинен включати initData і проходити цю перевірку.

Account Abstraction з ZeroDev

import { createKernelAccount, createKernelAccountClient } from '@zerodev/sdk'; import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator'; const signer = privateKeyToAccount( deriveKeyFromTelegram(WebApp.initDataUnsafe.user.id) ); const ecdsaValidator = await signerToEcdsaValidator(publicClient, { signer, kernelVersion: KERNEL_V3_1, }); const account = await createKernelAccount(publicClient, { plugins: { sudo: ecdsaValidator }, kernelVersion: KERNEL_V3_1, }); const kernelClient = createKernelAccountClient({ account, paymaster: { getPaymasterData: async (userOp) => { // Повертає підписаний paymasterData від нашого сервера }, }, }); 

Gasless-транзакції через paymaster: користувач не витрачає ETH, газ оплачує проєкт.

TonConnect для TON

import TonConnect from '@tonconnect/sdk'; const connector = new TonConnect({ manifestUrl: 'https://yourapp.com/tonconnect-manifest.json', }); const walletsList = await connector.getWallets(); await connector.connect({ universalLink: wallet.universalLink, bridgeUrl: wallet.bridgeUrl, }); await connector.sendTransaction({ validUntil: Math.floor(Date.now() / 1000) + 300, messages: [{ address: recipientAddress, amount: toNano('0.5').toString(), payload: cell.toBoc().toString('base64'), }], }); 

Безпечне зберігання ключів: шифрування PIN-кодом

async function encryptShare(share: Uint8Array, pin: string): Promise<string> { const pinKey = await crypto.subtle.importKey( 'raw', new TextEncoder().encode(pin), 'PBKDF2', false, ['deriveKey'] ); const salt = crypto.getRandomValues(new Uint8Array(16)); const aesKey = await crypto.subtle.deriveKey( { name: 'PBKDF2', salt, iterations: 600_000, hash: 'SHA-256' }, pinKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt'] ); const iv = crypto.getRandomValues(new Uint8Array(12)); const encrypted = await crypto.subtle.encrypt( { name: 'AES-GCM', iv }, aesKey, share ); return JSON.stringify({ salt: btoa(String.fromCharCode(...salt)), iv: btoa(String.fromCharCode(...iv)), data: btoa(String.fromCharCode(...new Uint8Array(encrypted))), }); } 

Сервер зберігає зашифрований blob, розшифрувати без PIN неможливо. PIN не передається на сервер. Таблиця стеку:

Компонент Технологія
TMA Framework @twa-dev/sdk + React
EVM Wallet Web3Auth MPC / ZeroDev AA
TON Wallet TonConnect + @ton/core
Auth Telegram initData verification
Key storage Server-side encrypted shares
Notifications Telegram Bot API

Процес роботи

  1. Аналітика та архітектура: визначаємо вимоги (custodial/AA, TON/EVM, gasless), малюємо схему потоків. На цьому етапі закладаємо базу для 30-40% економії на газі через AA.
  2. Проектування UI: адаптуємо Telegram UI (CSS-змінні, @telegram-apps/telegram-ui), проектуємо екрани send/receive/history.
  3. Розробка backend: Node.js + Fastify, PostgreSQL для метаданих, Redis для сесій. Інтеграція з MPC/AA SDK.
  4. Смарт-контракти: пишемо та тестуємо контракти (Hardhat/Foundry) для AA vault або мультипідпису.
  5. Інтеграція та тестування: unit-тести, інтеграційні через Tenderly Fork, fuzzing (Echidna).
  6. Security audit: обов'язково до релізу — ми співпрацюємо з провідними аудиторами.
  7. Деплой та моніторинг: деплой на production, налаштування алертів, rate limiting.

Що входить у роботу

  • Вихідний код приватного фронтенду та бекенду (NDA).
  • Розгорнута інфраструктура (Web3 RPC, paymaster, MPC nodes).
  • Повна документація API та архітектури.
  • Навчання команди замовника (2-3 дні).
  • Гарантійна підтримка 1 місяць після релізу.

Орієнтири за термінами

Етап Термін
MVP (custodial, один chain, send/receive) 4–6 тижнів
MPC + gasless AA + multi-chain (TON+EVM) 3–5 місяців
Security audit перед релізом +2–3 тижні

Вартість MVP починається від $15,000. Повноцінний продукт з MPC, AA, gasless та мультичейном — від $50,000. Вартість розраховується індивідуально, залежить від складності інтеграцій та вимог до безпеки. Замовте оцінку проєкту — ми проаналізуємо вашу задачу та запропонуємо оптимальне рішення. Наш досвід: 10+ років у Web3, 50+ запущених проєктів (гаманці, DeFi, NFT). За 2 дні підготуємо пропозицію.

MPC-архітектура скорочує час до випуску MVP у 2-3 рази порівняно з самостійною розробкою AA, а gasless-транзакції підвищують конверсію користувачів на 40%. Крім того, MPC зменшує ризик злому в 100 разів порівняно з локальним зберіганням ключів. Отримайте консультацію — напишіть нам, і ми підготуємо пропозицію за 2 дні. Середній час онбордингу користувача скорочується на 70% завдяки TMA. Підтримуємо 7 блокчейнів (EVM + TON).