Интеграция метавселенной с блокчейн-кошельком
Метавселенная без кошелька — это просто онлайн-игра. Кошелёк даёт пользователю реальное владение: 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 мультичейн метавселенной.







