Создание крипто-игры в 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. Свяжитесь с нами, чтобы обсудить ваш проект.







