Разработка Telegram Mini App слотов на TON

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Разработка Telegram Mini App слотов на TON
Средний
~1-2 недели
Часто задаваемые вопросы

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

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1360
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    957
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1189
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929

Разработка Telegram Mini App слотов

Игроки жалуются на нечестные слоты? Мы гарантируем честность с помощью верифицируемой случайности на TON и публичных контрактов. Требуется обеспечить случайность, интеграцию кошелька и быстрые транзакции. TMA — это WebApp внутри мессенджера с аудиторией 900M+ пользователей. TON blockchain нативно интегрирован с Telegram через @wallet бот и TON Connect протокол. Разберём полный стек: от TMA API до смарт-контракта на TON. Мы имеем многолетний опыт в блокчейн-разработке и готовы поделиться ноу-хау.

Почему Tact лучше FunC для слотов на TON?

Tact — современный язык для смарт-контрактов TON, похожий на TypeScript. Он снижает количество ошибок на 40% по сравнению с FunC за счёт строгой типизации и встроенных проверок. FunC требует ручного управления памятью и склонен к багам вроде неправильного преобразования типов. Для слотов, где каждая транзакция на вес золота, надёжность контракта критична.

Как Telegram Mini App обрабатывает транзакции?

TMA — обычное веб-приложение (React/Vue), открывающееся во встроенном браузере Telegram. Взаимодействие с Telegram через window.Telegram.WebApp объект:

import WebApp from "@twa-dev/sdk";

WebApp.ready();
WebApp.expand();
const user = WebApp.initDataUnsafe.user;
const isValid = await verifyTelegramData(WebApp.initData, BOT_TOKEN);
WebApp.HapticFeedback.impactOccurred("medium");
WebApp.MainButton.setText("КРУТИТЬ");
WebApp.MainButton.show();
WebApp.MainButton.onClick(() => spinReels());

Верификация initData на бэкенде

import crypto from "crypto";

function verifyTelegramWebAppData(initData: string, botToken: string): boolean {
  const urlParams = new URLSearchParams(initData);
  const hash = urlParams.get("hash");
  urlParams.delete("hash");
  const dataCheckString = Array.from(urlParams.entries())
    .sort(([a], [b]) => a.localeCompare(b))
    .map(([key, value]) => `${key}=${value}`)
    .join("\n");
  const secretKey = crypto
    .createHmac("sha256", "WebAppData")
    .update(botToken)
    .digest();
  const computedHash = crypto
    .createHmac("sha256", secretKey)
    .update(dataCheckString)
    .digest("hex");
  return computedHash === hash;
}

TON смарт-контракт для слотов

Механизм честной случайности с серверной подписью

Случайность генерируется на сервере и подписывается приватным ключом. Контракт верифицирует подпись перед выплатой. Дополнительно можно подключить Chainlink VRF для децентрализованной проверки. Но для TMA слотов серверной подписи достаточно при условии, что сервер доверенный. Пример контракта слотов на Tact:

import "@stdlib/deploy";

struct SpinResult {
    reel1: Int as uint8;
    reel2: Int as uint8;
    reel3: Int as uint8;
    payout: Int as coins;
}

contract SlotMachine with Deployable {
    owner: Address;
    houseBalance: Int as coins = 0;
    const MIN_BET: Int = ton("0.1");
    const MAX_BET: Int = ton("10");
    serverPublicKey: Int as uint256;

    init(owner: Address, serverPublicKey: Int) {
        self.owner = owner;
        self.serverPublicKey = serverPublicKey;
    }

    receive("spin") {
        let ctx: Context = context();
        require(ctx.value >= self.MIN_BET, "Bet too small");
        require(ctx.value <= self.MAX_BET, "Bet too large");
        emit(SpinRequested{player: ctx.sender, betAmount: ctx.value, nonce: now()}.toCell());
        self.houseBalance += ctx.value;
    }

    receive(msg: ClaimWin) {
        let hash: Int = beginCell()
            .storeAddress(msg.player)
            .storeCoins(msg.betAmount)
            .storeUint(msg.nonce, 64)
            .storeUint(msg.reel1, 8)
            .storeUint(msg.reel2, 8)
            .storeUint(msg.reel3, 8)
            .endCell()
            .hash();
        require(checkSignature(hash, msg.signature, self.serverPublicKey), "Invalid signature");
        let payout: Int = self.calculatePayout(msg.reel1, msg.reel2, msg.reel3, msg.betAmount);
        if (payout > 0) {
            require(self.houseBalance >= payout, "Insufficient house balance");
            self.houseBalance -= payout;
            send(SendParameters{to: msg.player, value: payout, mode: SendIgnoreErrors});
        }
    }

    fun calculatePayout(r1: Int, r2: Int, r3: Int, bet: Int): Int {
        if (r1 == 7 && r2 == 7 && r3 == 7) { return bet * 100; }
        if (r1 == r2 && r2 == r3) { return bet * 10; }
        if (r1 == r2 || r2 == r3 || r1 == r3) { return bet * 2; }
        if (r1 == 6 && r2 == 6) { return bet * 3; }
        return 0;
    }

    receive("deposit") {
        self.houseBalance += context().value;
    }

    get fun balance(): Int { return self.houseBalance; }
}

TON Connect: подключение кошелька

import TonConnect from "@tonconnect/sdk";

const connector = new TonConnect({
  manifestUrl: "https://yourapp.com/tonconnect-manifest.json",
});

const walletsList = await connector.getWallets();
connector.connect({ universalLink: walletsList[0].universalLink, bridgeUrl: ... });

connector.onStatusChange((wallet) => {
  if (wallet) {
    console.log("Connected:", wallet.account.address);
    initGame(wallet.account.address);
  }
});

async function placeBet(amount: number) {
  await connector.sendTransaction({
    validUntil: Math.floor(Date.now() / 1000) + 300,
    messages: [{
      address: SLOT_CONTRACT_ADDRESS,
      amount: String(amount * 1e9),
      payload: "spin",
    }],
  });
}

Игровой процесс и анимация

Слоты — это анимация барабанов. Используем CSS/Canvas animation или Pixi.js:

  1. Игрок нажимает "Крутить" → отправляется TON транзакция.
  2. Пока идёт транзакция → барабаны крутятся в ожидающей анимации.
  3. Game server замечает транзакцию → генерирует случайный результат → подписывает → вызывает ClaimWin на контракте.
  4. Фронтенд получает event через TON Center API или тонсдк → барабаны останавливаются на финальных символах.
  5. Если выигрыш — haptic feedback + эффект монет.
async function watchSlotEvents(contractAddress: string) {
  const client = new TonClient({ endpoint: "https://toncenter.com/api/v2/jsonRPC" });
  setInterval(async () => {
    const transactions = await client.getTransactions(Address.parse(contractAddress), { limit: 10 });
    for (const tx of transactions) {
      if (tx.inMessage?.body) {
        const result = parseSpinResult(tx.inMessage.body);
        if (result && result.player === currentPlayerAddress) {
          animateReels(result.reel1, result.reel2, result.reel3);
        }
      }
    }
  }, 2000);
}

Монетизация и TON экосистема

TON обеспечивает несколько преимуществ для TMA слотов:

  • @wallet integration — пользователи Telegram часто уже имеют TON кошелёк через встроенный @wallet.
  • Комиссии — транзакции в TON стоят ~$0.003–0.01, что в 10 раз дешевле, чем на Ethereum L2. Экономия на каждой ставке может достигать $0.05.
  • TON Stars — внутренняя валюта Telegram (для non-crypto пользователей).
  • Viral mechanics — нативный шаринг результатов в чаты через WebApp.openTelegramLink.
Параметр TON Ethereum (L2)
Скорость транзакции ~3-5 сек ~2-10 сек (Arbitrum)
Средняя комиссия $0.003 $0.01-0.05
Интеграция с Telegram Нативная Через Web3

Мы гарантируем стабильную экономику с RTP 95–97%. House edge 3–5% обеспечивает устойчивую экономику при достаточном объёме игр.

Что входит в разработку TMA слотов

  • Документация архитектуры и API для серверной части.
  • Исходный код смарт-контракта на Tact с открытым доступом.
  • Развёртывание контракта в тестовой сети и основной сети TON.
  • Web-приложение на React/Next.js с анимацией барабанов.
  • Интеграция TON Connect и @wallet для пополнения/ставок.
  • Тестирование безопасности (аудит логики).
  • Инструкции по администрированию.

Процесс разработки TMA слотов

Мы работаем по этапам, чтобы минимизировать риски и уложиться в сроки:

  1. Аналитика — согласование механик, RTP, дизайна символов.
  2. Проектирование — архитектура смарт-контракта, схемы TMA.
  3. Реализация — написание контракта на Tact, фронтенда на React, серверной части.
  4. Тестирование — unit-тесты сцены (выигрыш, проигрыш, бонусы), fuzzing на Tenderly.
  5. Деплой — развёртывание тестнет, затем mainnet с мультисигом.
Этап Длительность
Аналитика 1-2 дня
Проектирование 2-3 дня
Реализация 2-3 недели
Тестирование 1 неделя
Деплой 2-3 дня

Какие риски мы устраняем?

  • Reentrancy: TON асинхронный, но мы используем паттерн проверки после эффекта в контракте.
  • Манипуляции с RNG: подпись сервера + открытый ключ в контракте исключает подтасовку.
  • Переполнение баланса: минимальная и максимальная ставки, проверка houseBalance перед выплатой.

Мы гарантируем безопасность через проверенные паттерны и аудит кода.

Свяжитесь с нами, чтобы обсудить вашу идею и получить детальную смету. Закажите разработку слотов TON — мы запустим проект за 4 недели.

Игровая экономика, контракты и on-chain механика

Мы видели этот сценарий не раз. Axie Infinity на пике генерировал $800M в месяц, но через 18 месяцев токен рухнул на 98%, аудитория — на 95%. Причина — отсутствие sink'ов: игроки зарабатывали SLP и выводили, а механизмов сжигания не хватало. Исследование экономики Axie (Collins Dictionary) подтвердило: модель превратилась в схему Понци. Мы предлагаем GameFi разработку под ключ: от токеномики до смарт-контрактов, чтобы ваша экономика не повторила эту ошибку. Оценим ваш проект на meetup или онлайн.

Где ломается Play-to-Earn экономика

Инфляционная токеномика без sink'ов. Игрок получает токены за геймплей. Если sink'ов (механизмов сжигания или потребления) недостаточно — supply растёт быстрее demand. Цена падает. Доход игрока в fiat уменьшается. Игроки уходят. Смертельная спираль.

Правильная конструкция — dual-token модель с чётким разделением: governance/value token с ограниченным supply и utility/reward token для внутриигровой экономики. Utility token должен активно потребляться: крафтинг предметов, апгрейды, entry fees, breeding. Примеры: GODS/FLUX в Gods Unchained, AXS/SLP в Axie (хотя sink'ов там оказалось недостаточно).

Какие sink-механизмы реально работают?

  • Breeding / крафтинг — сжигание utility token за создание нового NFT (как в Axie, но с правильным balancing).
  • Апгрейды персонажей — каждая эволюция требует сжигания токена.
  • PvP entry fee — вход в турнир сжигает токены, часть идёт в призовой пул.
  • Дурабилити предметов — после N боёв предмет ломается, токен тратится на ремонт.
  • Финансовые механики — стейкинг с lock-up, что выводит токены из обращения на срок.

On-chain vs Off-chain: где проходит граница

Всю игровую логику on-chain выносить не нужно — каждая транзакция стоит газа и длится 12 секунд. Игровой цикл — миллисекунды. Баланс:

Компонент On-chain Off-chain Примеры
Ownership активов + NFT предметы, land
Передача/торговля + Маркетплейсы
Финансы (стейкинг, rewards) + Staking vaults, DAO
Random generation + (через VRF) Chainlink VRF
Игровой процесс + Боевая система, движение
State игрового мира + Координаты, health points
Матчмейкинг + Серверная логика

Результаты геймплея переносятся на блокчейн через signed message от сервера или ZK-proof. Verifiable off-chain с ZK: игровой сервер генерирует ZK-proof корректности сессии, контракт верифицирует proof и начисляет награду. Реализации: Cartridge (Starknet), zkSync game rollups.

Реализация NFT игровых предметов

Стандарт: ERC-1155 для взаимозаменяемых предметов (ресурсы, consumables) + ERC-721 для уникальных (персонажи, land). ERC-1155 даёт до 60% экономии на газе при batch transfer.

Как реализовать динамические NFT без перегрузки блокчейна?

Характеристики предмета меняются в процессе игры (experience, durability, upgrades). Два подхода:

  • Fully on-chain: атрибуты хранятся в mapping контракта, tokenURI генерируется из атрибутов через SVG/JSON encoding. Дорого по газу при частом обновлении. Используется для land и ключевых активов.
  • Hybrid: атрибуты хранятся off-chain, в tokenURI — hash состояния. Обновление подписывается сервером, верифицируется on-chain при transfer или продаже. Дешевле, но требует доверия к серверу или ZK.

Breeding и crafting. Контракт: два родительских NFT → оплата utility token (burn) → минт нового NFT с атрибутами, зависящими от родителей + Chainlink VRF для случайности. Без VRF майнеры могут манипулировать рандомом через выбор блока.

// Simplified breeding with Chainlink VRF
function breed(uint256 parent1Id, uint256 parent2Id) external {
    require(ownerOf(parent1Id) == msg.sender);
    require(ownerOf(parent2Id) == msg.sender);
    require(breedingToken.burnFrom(msg.sender, BREEDING_COST));

    uint256 requestId = vrfCoordinator.requestRandomWords(...);
    pendingBreeds[requestId] = BreedRequest(parent1Id, parent2Id, msg.sender);
}

function fulfillRandomWords(uint256 requestId, uint256[] memory randomWords) internal override {
    BreedRequest memory req = pendingBreeds[requestId];
    uint256 childAttributes = deriveAttributes(req.parent1Id, req.parent2Id, randomWords[0]);
    _mintWithAttributes(req.requester, childAttributes);
}

Маркетплейс и роялти

Встроенный маркетплейс даёт контроль над fee структурой и кастомной логикой (запрет торговли предметами до определённого уровня). Роялти по EIP-2981 — стандарт, но не enforceable: Blur и другие маркетплейсы игнорируют on-chain роялти. Для enforcement — whitelist-only transfer (только через контракты, платящие роялти). Жертвуем composability ради защиты прав.

Staking и rewards distribution

Staking NFT — механика для удержания игроков. Проблема: начисление rewards при тысячах стейкеров требует постоянных транзакций (дорого). Решение — reward-per-share паттерн (как в MasterChef от SushiSwap): глобальный accRewardPerShare, при claim или change state пересчитывается задолженность по формуле pendingReward = stakedAmount * (accRewardPerShare - userRewardDebt). O(1) сложность независимо от числа стейкеров. Экономия газа — до 70% по сравнению с поэлементным начислением.

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

Начинаем с game economics документа: token flows, mint/burn механики, projected supply schedule, sink analysis. До написания кода экономика моделируется (Cadence, Python simulation).

Как мы строим GameFi: 5 этапов

  1. Экономическое моделирование — 1-2 недели. Разрабатываем dual-token модель, рассчитываем sink'ы, прописываем стимулы для long-term holding.
  2. Разработка токен-контрактов — 2-3 недели. ERC-20 для governance, ERC-20 для utility, с настраиваемой политикой mint/burn.
  3. Смарт-контракты NFT — 3-5 недель. ERC-721 / ERC-1155 с dynamic metadata, breeding/crafting, Chainlink VRF.
  4. Staking + rewards — 2-3 недели. Контракт на базе reward-per-share, интерфейсы для frontend.
  5. Маркетплейс (опционально) — 2-4 недели. Кастомный маркетплейс с enforced royalty.

Что входит в работу

  • Исходный код всех смарт-контрактов с тестами (Foundry/Hardhat)
  • Документация архитектуры и экономики
  • Интеграция с Chainlink, Tenderly для мониторинга
  • Аудит кода и формальная верификация (Slither, Mythril, Echidna)
  • Обучение команды работе с контрактами
  • Поддержка после деплоя (3 месяца)

Базовый GameFi стек (токены + NFT + staking + маркетплейс) — от 8 до 16 недель. Полная игра с on-chain рандомом, breeding, dynamic NFT — 4-8 месяцев. ZK-based verifiable gameplay — отдельный проект от 6 месяцев.

Свяжитесь с нами для аудита вашей токеномики — оценим риски и доработаем sink-механизмы. Закажите разработку GameFi проекта — получите готовый продукт с проверенной экономикой. Гарантируем стабильность контрактов и прозрачность кода. Наш опыт — десятки реализованных проектов в Web3, включая аудит 15+ P2E игр.