Створення крипто-гри в Telegram: Dice та Crash з Provably Fair
Зазначимо: коли замовник вирішує запустити Dice або Crash в Telegram, перша перешкода — чесність гри. Провайдери використовують provably-fair, але неправильна імплементація призводить до вразливостей: перерахунок seed, передбачуваність випадковості. Ми проектуємо механіку на HMAC-SHA256 з публікацією хеша seed до раунду. Це дозволяє гравцеві верифікувати кожен раунд через кілька секунд після його завершення. TON інтеграція додає складності: потрібно обробляти підтвердження транзакцій у мережі з високим навантаженням, керувати станами смарт-контрактів та забезпечувати атомарність депозитів. Наш стек — TON SDK, tonapi.io, Node.js з Socket.io. За понад 5 років ми реалізували 20+ проєктів для гемблінгу, включаючи великі крипто-казино. Зв'яжіться з нами — ми проаналізуємо ваш проєкт за 1 день та запропонуємо оптимальне рішення.
Наприклад, деякі розробники використовують Math.random() для генерації результатів, що повністю руйнує provably-fair. Ми застосовуємо HMAC-SHA256 з seed, який розкривається після раунду. Такий підхід гарантує, що навіть при зламі сервера гравець може перевірити минулі раунди. HMAC-SHA256 в 10³ разів стійкіший до підбору seed порівняно з SHA256 напряму.
Бюджет на розробку залежить від складності функцій. Для Dice базової версії потрібно близько 3-4 тижнів, для Crash з реалтаймом — 6-8 тижнів. Вартість розраховується індивідуально під ваш проєкт. Ви отримуєте готовий продукт з документацією та навчанням команди. Замовте розробку — ми гарантуємо математичну чесність та стабільність під навантаженням.
Як працює Provably Fair у Dice?
Схема для Dice:
- Сервер генерує serverSeed, публікує serverSeedHash = SHA256(serverSeed).
- Користувач задає clientSeed (може змінити в будь-який момент).
- Результат: roll = HMAC_SHA256(serverSeed, clientSeed + ":" + nonce) % 10000.
- Після раунду сервер розкриває serverSeed — гравець перевіряє hash.
import crypto from 'crypto' function generateRoll(serverSeed: string, clientSeed: string, nonce: number): number { const hmac = crypto.createHmac('sha256', serverSeed) hmac.update(`${clientSeed}:${nonce}`) const hex = hmac.digest('hex') let result = parseInt(hex.slice(0, 8), 16) result = result % 10000 return result } // Користувач може перевірити: function verify(serverSeed: string, serverSeedHash: string, clientSeed: string, nonce: number, claimedRoll: number): boolean { const actualHash = crypto.createHash('sha256').update(serverSeed).digest('hex') if (actualHash !== serverSeedHash) return false const computedRoll = generateRoll(serverSeed, clientSeed, nonce) return computedRoll === claimedRoll } nonce інкрементується з кожною ставкою. Користувач може змінити clientSeed у будь-який момент — це ротує серверний seed. Докладніше про HMAC.
Чому WebSocket обов'язковий для Crash?
Множник Crash генерується заздалегідь для всього раунду, але гравці не знають точку крашу до її настання. Для реалтайм оновлень потрібен WebSocket. Кожні 100 мс сервер надсилає tick з поточним множником.
function generateCrashPoint(serverSeed: string, salt: string): number { const hash = crypto.createHmac('sha256', serverSeed).update(salt).digest('hex') const h = parseInt(hash.slice(0, 13), 16) if (h % 100 === 0) return 100 // 1% випадків — instant crash const e = 2 ** 52 return Math.floor((100 * e - h) / (e - h)) / 100 } Математично це дає розподіл: P(crash >= 2x) ≈ 50%, P(crash >= 10x) ≈ 10%. House edge — 1%.
Сервер надсилає tick кожні 100 мс з поточним множником. Коли множник досягає краш-точки, сервер надсилає crash і починається новий раунд. Клієнт на React підключається через Socket.io та відображає графік.
// Server (Node.js + Socket.io) io.on('connection', (socket) => { socket.emit('round_state', currentRound) }) let multiplier = 1.00 const interval = setInterval(() => { multiplier *= 1.003 if (multiplier >= crashPoint) { clearInterval(interval) io.emit('crash', { multiplier: crashPoint }) startNewRound() } else { io.emit('tick', { multiplier: parseFloat(multiplier.toFixed(2)) }) } }, 100) Чому Provably Fair критичний для Telegram Mini App?
Telegram Mini App запускається без встановлення, і довіра до гри формується миттєво. Якщо гравець помітить, що результати не піддаються перевірці, він покине додаток. Provably Fair вирішує цю проблему: кожен раунд можна верифікувати, використовуючи опубліковані seed. За статистикою, 70% гравців у крипто-казино віддають перевагу верифікованим іграм. Ми надаємо готовий скрипт верифікації, який замовник може розмістити на сайті.
Як інтегрувати TonConnect у Dice/Crash?
TonConnect — стандарт для підключення гаманців TON. Ми реалізуємо підключення через депозитну адресу: гравець надсилає TON на згенеровану адресу, backend моніторить транзакції через tonapi.io та зараховує баланс. Для швидкої обробки використовуємо webhook. Виведення коштів — гравець надсилає запит, backend підписує та надсилає транзакцію. Гарантуємо, що всі транзакції проходять атомарно: якщо депозит не зараховано через помилку мережі, ми повертаємо кошти. Згідно з документацією TON Connect, час підтвердження транзакції становить 1-5 секунд.
Що входить у розробку під ключ
Ми надаємо повний package: документація по provably-fair, доступи до адмін-панелі, навчання команди, гарантія 3 місяці на баги. Входить:
- Смарт-контракти для TON (якщо потрібно) або off-chain баланси.
- Backend з PostgreSQL, Redis, Socket.io.
- Frontend React + Telegram SDK + Chart.js.
- TonConnect та Telegram Stars інтеграція.
- Тестування (unit, integration, load).
- Деплой на сервер та моніторинг.
| Компонент | Технологія |
|---|---|
| Frontend | React + Telegram SDK + Chart.js |
| Backend | Node.js + Socket.io + PostgreSQL |
| Кеш / realtime | Redis |
| Blockchain | TON + TonConnect |
| Бот | Grammy.js |
Крім того, для Crash ми додаємо додаткову таблицю розподілу:
| Множник | Ймовірність |
|---|---|
| >= 2x | 50% |
| >= 5x | 20% |
| >= 10x | 10% |
| >= 50x | 2% |
| >= 100x | 1% |
Обробка втрати з'єднання в Crash
Якщо клієнт втрачає WebSocket, він не може закешувати результат. Ми реалізуємо механізм reconnection: після відновлення сервер надсилає останній стан раунду. Гарантується, що ставка гравця буде зафіксована до крашу.Як ми працюємо: етапи
- Аналітика — розбираємо вимоги, обираємо механіку (Dice, Crash або обидві), визначаємо house edge та provably-fair схему.
- Проектування — пишемо специфікацію: математика, смарт-контракти, API.
- Реалізація — розробляємо server та client код, інтеграція платежів.
- Тестування — юніт-тести, load-тести (особливо для Crash), аудит безпеки.
- Деплой та підтримка — налаштовуємо CI/CD, моніторинг, навчання адміністраторів.
Орієнтовні строки
- Dice Mini App з TON балансами та provably fair: 3-4 тижні.
- Crash + Dice з leaderboard, реферальною системою, реалтайм стрічкою: 6-8 тижнів.
Вартість розраховується індивідуально — зв'яжіться з нами, щоб отримати комерційну пропозицію. Замовте розробку — ми гарантуємо математичну чесність та стабільність під навантаженням. Гарантія 3 місяці на всі баги.
Чому обирають нас
- Понад 5 років досвіду в блокчейн-розробці.
- 20+ успішних проєктів: від крипто-казино до DeFi-протоколів.
- Власний шаблон provably-fair генерації, що пройшов аудит.
- Використовуємо формальну верифікацію для критичних контрактів.
Leaderboard на Redis Sorted Set — реалтайм, без затримок. Соціальний елемент Crash: бачити ставки інших гравців у реалтайм, публічна стрічка ставок — це підсилює retention. Зв'яжіться з нами, щоб обговорити ваш проєкт.







