Web3-игра под ключ: архитектура, смарт-контракты, токеномика

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

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

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

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

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

Проектирование Web3-игры

Средняя транзакция в ончейн-игре стоит $0.01 на Polygon, но если разместить всю логику on-chain, игра станет неиграбельной из-за задержек в 15 секунд на блок. Правильная архитектура Web3-игры — это чёткая граница между тем, что должно быть on-chain, и тем, что должно оставаться off-chain. Без этого игра либо неиграбельна, либо блокчейн-часть декоративна. Наш опыт 10+ лет в блокчейн-разработке позволяет создавать решения, которые работают в реальном продакшене. 95% геймплея должно быть off-chain, чтобы обеспечить отзывчивость. Оцените свой проект — получите консультацию разработчика.

Почему игры нуждаются в блокчейне?

Блокчейн добавляет trustless ownership и прозрачную экономику. Игроки действительно владеют своими активами, могут торговать ими вне игры, участвовать в управлении проектом. Но просто добавить блокчейн в игру — плохая идея. Важно правильно разделить on-chain и off-chain логику. Оценим ваш проект — свяжитесь с нами для консультации.

Как разделить on-chain и off-chain?

Вот чёткие критерии:

  • Должно быть on-chain: Ownership активов (NFT персонажи, предметы, земли); финансовые операции (покупка, продажа, стейкинг, награды); критические результаты, влияющие на экономику (победа в турнире, редкий дроп); governance решения (DAO).
  • Должно быть off-chain: Игровая механика в реальном времени; позиции игроков, столкновения, физика; большинство gameplay событий; социальные функции (чат, гильдии); аналитика и логирование.

Хорошая модель: игровой сервер — источник правды для gameplay, блокчейн — источник правды для ownership и экономики. Синхронизация происходит в определённых checkpoint.

Архитектура: серверы, контракты, клиент

Игровой бэкенд

Game Client (Unity/Unreal/Web)
        ↓
Game Server (authoritative)
    └── Game State DB (Redis для real-time, PostgreSQL для persistence)
        ↓ (при значимых событиях)
Blockchain Sync Service
        ↓
Smart Contracts (Assets, Economy, Rewards)
        ↓
The Graph (индексирование для UI/лидерборды)

Authoritative server model — клиент никогда не принимает финальных решений. Клиент отправляет input, сервер верифицирует и применяет. Это предотвращает читинг без какого-либо блокчейна. Authoritative server model эффективнее клиентского anti-cheat в 100 раз, так как клиент не контролирует результат.

Blockchain Sync Service — отдельный сервис, который слушает игровые события и транслирует значимые из них в on-chain транзакции. Работает асинхронно, не блокирует gameplay.

NFT активы: стандарты и метаданные

Согласно ERC-1155 (EIP-1155), мультитокен стандарт позволяет управлять несколькими типами NFT в одном контракте. Мы используем комбинацию ERC-721 для уникальных предметов и ERC-1155 для stackable items. Метаданные: on-chain (maximum permanence, дорого), IPFS (компромисс) или централизованный сервер (быстро, дёшево, но зависит от нас).

contract GameItem is ERC1155 {
    struct ItemType {
        string name;
        uint8 rarity;        // 1=Common, 2=Rare, 3=Epic, 4=Legendary
        uint16 baseAttack;
        uint16 baseDefense;
        bool tradeable;
    }

    mapping(uint256 => ItemType) public itemTypes;
    mapping(uint256 => uint256) public itemMaxSupply;
    mapping(uint256 => uint256) public itemCurrentSupply;

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    function mintItem(
        address to,
        uint256 itemTypeId,
        uint256 amount,
        bytes memory data
    ) external onlyRole(MINTER_ROLE) {
        require(
            itemCurrentSupply[itemTypeId] + amount <= itemMaxSupply[itemTypeId],
            "Max supply exceeded"
        );
        itemCurrentSupply[itemTypeId] += amount;
        _mint(to, itemTypeId, amount, data);
    }

    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal override {
        for (uint i = 0; i < ids.length; i++) {
            if (from != address(0) && to != address(0)) {
                require(itemTypes[ids[i]].tradeable, "Item is soulbound");
            }
        }
        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
    }
}

Игровой токен: tokenomics

Большинство провальных GameFi проектов провалились из-за плохой tokenomics, а не игры. Основные ошибки: инфляционная спираль (токен выдаётся без достаточного sink'а — пример Axie Infinity), попытка двухтокенной модели без правильного пега. Правильный подход — балансировать emission и sink.

contract GameEconomy {
    function claimDailyReward(
        address player,
        uint256 amount,
        uint256 nonce,
        bytes memory serverSignature
    ) external {
        bytes32 message = keccak256(abi.encodePacked(player, amount, nonce));
        require(
            ECDSA.recover(message.toEthSignedMessageHash(), serverSignature) == GAME_SERVER,
            "Invalid server signature"
        );
        require(!usedNonces[nonce], "Nonce already used");
        usedNonces[nonce] = true;

        require(dailyClaimed[player][today()] + amount <= MAX_DAILY_REWARD, "Daily limit");
        dailyClaimed[player][today()] += amount;

        gameToken.mint(player, amount);
    }

    function craftItem(uint256 recipeId) external {
        Recipe memory recipe = recipes[recipeId];
        gameToken.burnFrom(msg.sender, recipe.tokenCost);
        // mint NFT предмет
    }
}

Game Server Signature Pattern

Критический паттерн для Web3-игр: игровой сервер является доверенным источником правды, его решения верифицируются on-chain через подпись. Пользователь не может сам вызвать claimReward — он получает подписанный сервером ваучер. Это предотвращает фабрикацию, двойную трату и читинг.

// Game Server side (Node.js)
import { ethers } from "ethers";

const serverWallet = new ethers.Wallet(process.env.SERVER_PRIVATE_KEY);

async function generateRewardVoucher(
  playerAddress: string,
  rewardAmount: bigint,
  gameSessionId: string
): Promise<{ nonce: string; signature: string; amount: string }> {
  const nonce = ethers.hexlify(ethers.randomBytes(32));
  const message = ethers.solidityPackedKeccak256(
    ["address", "uint256", "bytes32"],
    [playerAddress, rewardAmount, nonce]
  );
  const signature = await serverWallet.signMessage(ethers.getBytes(message));
  return { nonce, signature, amount: rewardAmount.toString() };
}

Anti-cheat на уровне блокчейна

On-chain верификация через commit-reveal для случайности: игрок коммитит hash(seed) до игры, после игры раскрывает seed, блокчейн верифицирует random = hash(seed, block.hash). Chainlink VRF v2 для on-chain randomness (дропы, матчмейкинг).

import { VRFConsumerBaseV2 } from "@chainlink/contracts/src/v0.8/VRFConsumerBaseV2.sol";

contract LootBox is VRFConsumerBaseV2 {
    mapping(uint256 => address) public requestToPlayer;

    function openLootBox() external returns (uint256 requestId) {
        requestId = vrfCoordinator.requestRandomWords(
            keyHash, subscriptionId, 3, 100_000, 3
        );
        requestToPlayer[requestId] = msg.sender;
    }

    function fulfillRandomWords(uint256 requestId, uint256[] memory words) internal override {
        address player = requestToPlayer[requestId];
        uint256 itemTier = words[0] % 1000;
        _mintReward(player, itemTier);
    }
}

Технический стек для Web3-игр

Game Engine: Unity (WebGL + native mobile) или Phaser 3 (browser-first). Web3 интеграция: Nethereum для EVM, Solana.Unity-SDK для Solana. Бэкенд: Go или Node.js для game server, отдельный TypeScript сервис для blockchain interactions. Индексирование: The Graph для лидербордов и истории, своя PostgreSQL для аналитики. Сети: Polygon PoS или Arbitrum Nova для частых транзакций, Ethereum mainnet для ценных активов. Экономия на газе ~90% при использовании L2.

Сеть TPS Стоимость транзакции Финализация Подходит для
Polygon PoS 7000 $0.01 2-3 мин Frequent microtransactions
Arbitrum Nova 40000 $0.001 5-10 мин High-throughput game actions
Ethereum L1 15 $5-50 ~13 сек High-value assets, governance
Solana 50000 $0.0001 400 мс Real-time gameplay
Типичные ошибки в токеномике GameFi - Бесконечная эмиссия без механизмов сжигания (burn) — инфляция убивает экономику. - Двухтокенная модель без стабильного пега (например, governance token с фиксированной ценой) — ведёт к коллапсу. - Отсутствие sink-механизмов: игроки не знают, на что тратить токены, кроме как продать.

Правильный подход: каждый эмитированный токен должен иметь запланированное применение (crafting, уплата комиссий, повышение уровней).

Пошаговый процесс работы над GameFi-проектом

  1. Проектирование токеномики и геймдизайн (4-6 недель).
  2. Разработка смарт-контрактов (ERC-1155, маркетплейс, стейкинг) (4-8 недель).
  3. Создание authoritative game server на Go или Node.js (4-8 недель).
  4. Интеграция клиента (Unity/Phaser) с Web3 (6-12 недель).
  5. Аудит смарт-контрактов и тестнет (4-6 недель).
  6. Запуск в mainnet и мониторинг (2 недели).

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

  1. Используйте authoritative server model: сервер принимает решения, клиент только отправляет input.
  2. Применяйте commit-reveal для случайных событий — это не позволяет игрокам предсказывать результат.
  3. Подписывайте каждое экономическое действие сервером (server signature pattern).

Объем работ

В рамках проекта мы предоставляем: документацию (архитектура, спецификации), полный исходный код, аудит безопасности, деплой в mainnet, мониторинг и поддержка после запуска. Гарантируем корректную работу смарт-контрактов и игрового сервера. Оценим ваш проект — свяжитесь с нами.

Команда имеет сертификаты, 10+ лет опыта. Обеспечиваем прозрачный процесс и аудит. Свяжитесь с нами для обсуждения вашего GameFi-проекта.

Игровая экономика, контракты и 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 игр.