Інтеграція метавселенної з блокчейн-кошельком
Метавселенна без кошелька — це просто онлайн-гра. Кошелек дає користувачу реальне володіння: NFT-аватар, land-ділянка, ігрові предмети існують у блокчейні незалежно від платформи. Задача інтеграції — прозоро з'єднати ігровий движок з Web3-стеком так, щоб користувач не замічав переходів між off-chain логікою та on-chain транзакціями.
Архітектура інтеграції
Вибір кошелькового стеку
Для метавселенної на базі браузера стандартний вибір — wagmi v2 + viem + RainbowKit або ConnectKit. Обидва вирішують одну задачу: абстрагують провайдер (MetaMask, WalletConnect, Coinbase Wallet) від бізнес-логіки.
Якщо метавселенна працює в Unity або Unreal — картина інша. Unity використовує Thirdweb Unity SDK або ChainSafe Web3.Unity. Unreal — переважно кастомні плагіни через HTTP-міст: ігровий движок спілкується з локальним або хмарним relay-сервісом, який уже взаємодіє з блокчейн-нодою.
Для мобільного клієнта (React Native) працює WalletConnect v2 через deep link: кошелек відкривається на пристрої, підписує транзакцію та повертає управління додатку.
Session keys та embedded wallets
Класична UX проблема метавселенн: кожна ігрова дія вимагає підпису в MetaMask. Купити меч — підпис. Переміститися аватар — підпис. Це неприйнятно.
Рішення — session keys через EIP-4337 (Account Abstraction) або через спеціалізовані SDK на кшталт Thirdweb або Sequence. Session key — це тимчасовий ключ з обмеженими правами:
// Створення session key через Thirdweb
const sessionKey = await smartWallet.createSessionKey({
keyAddress: temporaryEOA.address,
permissions: {
approvedCallTargets: [GAME_CONTRACT_ADDRESS],
nativeTokenLimitPerTransaction: parseEther("0.01"),
startDate: new Date(),
expirationDate: addHours(new Date(), 8),
},
});
Session key підписує ігрові транзакції автоматично у фоні — користувач не бачить вспливаючих вікон. При цьому його основний кошелек не рискує: session key має жорсткі обмеження по контрактам та сумам.
Embedded wallets (Privy, Dynamic, Thirdweb) — ще один підхід. Користувач логінується через email або соцмережу, додаток створює кошелек за нього, зберігає ключі в MPC-сховищі. Поріг входу знижується до нуля. Підходить для метавселенн, орієнтованих на масову аудиторію, а не на крипто-нативних користувачів.
Ключові сценарії інтеграції
Верифікація власності NFT-активів
При входу в метавселенну потрібно перевірити, якими активами володіє користувач: аватари, land, wearables, транспорт. Все це NFT у різних контрактах.
// Перевірка власності через viem
const ownedLands = await publicClient.readContract({
address: LAND_CONTRACT,
abi: landAbi,
functionName: "tokensOfOwner",
args: [userAddress],
});
// Завантажуємо метадані паралельно
const metadataList = await Promise.all(
ownedLands.map((tokenId) =>
publicClient.readContract({
address: LAND_CONTRACT,
abi: landAbi,
functionName: "tokenURI",
args: [tokenId],
})
)
);
Для великих колекцій (тисячі токенів) прямі RPC-запити неефективні. Використовуємо The Graph — subgraph індексує события Transfer та зберігає поточних власників. Запит до subgraph в 50-100x швидше, ніж перебір токенів через RPC.
Внутріігрові транзакції
Торгівля предметами всередину метавселенної — візови смарт-контрактів. Архітектурний вибір: вбудований маркетплейс (власний контракт) або інтеграція з існуючим (OpenSea Seaport, Blur).
Seaport — зрілий протокол з аудитом, підтримкою partial fill та royalty. Інтеграція через SDK:
import { Seaport } from "@opensea/seaport-js";
const seaport = new Seaport(walletClient);
const { executeAllActions } = await seaport.createOrder({
offer: [{ itemType: ItemType.ERC721, token: ITEM_CONTRACT, identifier: "42" }],
consideration: [{ amount: parseEther("0.5").toString(), recipient: sellerAddress }],
});
const order = await executeAllActions();
Для bulk-операцій (розпродаж інвентарю) — Seaport підтримує bulk listing через одну підпис.
Cross-chain активи
Користувач може мати активи у Ethereum, Polygon, Arbitrum. Метавселенна повинна агрегувати їх.
Стратегія: multichain read через одного провайдера (Alchemy або QuickNode підтримують кілька мереж), або через Moralis NFT API, який уже агрегує дані по мережах. Для переносу активів між мережами — інтеграція з bridge (LayerZero OFT для токенів, CCIP для NFT через Chainlink).
Газ та UX
Gasless транзакції через ERC-2771 (meta-transactions) або EIP-4337 paymaster: розробник оплачує газ за користувачів. Thirdweb Engine та Biconomy надають ready-made paymaster інфраструктуру.
Схема вибору підходу до кошелька:
| Аудиторія | Підхід | Інструменти |
|---|---|---|
| Крипто-нативні | External wallet + session keys | wagmi + EIP-4337 |
| Мейнстрим | Embedded wallet | Privy / Dynamic |
| Мобайл | WalletConnect v2 | AppKit |
| Unity/Unreal | SDK плагін | Thirdweb / ChainSafe |
Процес розробки
Аналіз (3-5 днів). Визначення ланцюга деплою (Polygon PoS, Arbitrum, Immutable zkEVM — кожна має свої trade-off по газу та екосистемі), архітектури контрактів, вимог до UX.
Інтеграція кошелька (1-2 тиждня). Підключення провайдера, session keys або embedded wallet, тестування всіх цільових кошельків.
Ігрові транзакції (2-4 тиждня). Смарт-контракти для ігрової економіки, інтеграція з движком, обробка помилок та reverted транзакцій.
Тестування (1-2 тиждня). Testnet прогін з реальними кошельками, нагрузочне тестування RPC-запитів, edge cases (мережа впала, транзакція завзла).
Загальний час інтеграції — від 4 тижнів для браузерного MVP до 3 місяців для production-ready мультичейн метавселенної.







