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. Типові помилки в токеноміці: безкінечна емісія без механізмів спалювання (burn) — інфляція вбиває економіку; двохтокенна модель без стабільного пега (наприклад, governance token з фіксованою ціною) — веде до колапсу; відсутність sink-механізмів — гравці не знають, на що витрачати токени, окрім як продати. Правильний підхід: кожен емітований токен повинен мати заплановане застосування (crafting, сплата комісій, підвищення рівнів).

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, що робить on-chain зберігання на L2 дешевше за L1 в 100 разів.

Мережа 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-проєктом

  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).

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

У вартість проєкту входить: повна документація (архітектура, специфікації, API), вихідний код смарт-контрактів та ігрового сервера, аудит безпеки, деплой в mainnet, навчання команди замовника, технічна підтримка після запуску. Гарантуємо коректну роботу смарт-контрактів та ігрового сервера. Оцінимо ваш проєкт — зв'яжіться з нами.

Команда має сертифікати, 10+ років досвіду у блокчейн-розробці, включаючи P2E проєкти та NFT для ігор. Забезпечуємо прозорий процес та аудит. Зв'яжіться з нами для обговорення вашого GameFi-проєкту.

GameFi розробка: ігрова економіка, контракти та on-chain механіка

Ми бачили цей сценарій не раз. Axie Infinity на піку мала великий дохід, але через 18 місяців токен різко знецінився, а аудиторія значно скоротилася. Причина — відсутність sink'ів: гравці заробляли SLP і виводили, а механізмів спалювання не вистачало. Ми пропонуємо GameFi розробку під ключ: від токеноміки до смарт-контрактів, щоб ваша економіка не повторила цю помилку. Оцінимо ваш проєкт на meetup або онлайн. Наш досвід — 5+ років, десятки реалізованих проєктів, включно з аудитом 15+ P2E ігор.

Чому ламається 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'ів там виявилося недостатньо). Ефективна економіка балансує mint та burn: типовий ratio — 1.2—1.5 burn на 1 mint для запобігання інфляції.

Які sink-механізми реально працюють?

Механізм Опис Приклад
Breeding / крафтинг Спалювання utility token за створення нового NFT Axie (але з правильним balancing)
Апгрейди персонажів Кожна еволюція вимагає спалювання токена Більшість P2E RPG
PvP entry fee Вхід у турнір спалює токени, частина йде в призовий пул Splinterlands
Дурабилити предметів Після N боїв предмет ламається, токен витрачається на ремонт Успадковано з MMORPG
Фінансові механіки Стейкінг з lock-up, що виводить токени з обігу на строк DeFi-шари

Наш досвід — десятки реалізованих проєктів у Web3, включно з аудитом 15+ P2E ігор. Ми знаємо, які sink'и працюють у довгостроковій перспективі. Наприклад, у проєкті з breeding RPG ми збільшили спалювання utility token на 300% за рахунок введення «ремеслу зношуваності» та обов'язкових апгрейдів.

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 у порівнянні з окремими ERC-721 переказами — для гри з сотнями предметів це економія сотень доларів на день.

Як реалізувати динамічні 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 та розподіл винагород

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

Детальніше про reward-per-shape реалізацію

Алгоритм працює так: при кожному депозиті/знятті стейку або при оновленні глобального пулу (наприклад, додаванні нових токенів винагороди) контракт оновлює accRewardPerShare = totalPendingReward / totalStaked. Потім для конкретного користувача розраховується pending = user.staked * (accRewardPerShare - user.rewardDebt). Після виплати user.rewardDebt встановлюється рівним accRewardPerShare. Це дозволяє не зберігати історію внесків кожного користувача. На практиці ми використовуємо для GameFi проєктів версію з multiplier для врахування різних ваг стейку (наприклад, рідкісні NFT дають більше винагороди).

Процес та терміни

Починаємо з 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 ігор. Гарантуємо стабільність контрактів і прозорість коду. Сертифіковані аудитори перевіряють кожен контракт на типові вразливості (reentrancy, flash loan, oracle manipulation).