Інтеграція з The Sandbox SDK

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція з The Sandbox SDK
Середній
~1-2 тижні
Часті запитання

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

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1120
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    588
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    855

Інтеграція з The Sandbox SDK

The Sandbox — метавселенна на базі Polygon, де земельні ділянки (LAND), ігрові ассети (ASSET) та персонажі (Avatar) є NFT. SDK (VoxEdit + Game Maker) дозволяє створювати ігри та інтерактивні досвід без глибоких знань блокчейну. Для розробників — додатковий рівень через Sandbox Game SDK та Web3 інтеграцію.

Структура The Sandbox екосистеми

Інструмент Призначення Технологія
VoxEdit Створення 3D воксельних ассетів Десктопне програму
Game Maker Розробка ігор без коду Visual scripting
Sandbox Game SDK Програмування ігрової логіки TypeScript
Marketplace API Торгівля ASSET NFT REST API
LAND API Дані про земельні ділянки GraphQL (The Graph)

Web3 інтеграція через Sandbox API

import { ethers } from 'ethers';

// ABI для основних контрактів Sandbox
const LAND_ABI = [
  'function ownerOf(uint256 tokenId) view returns (address)',
  'function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)',
  'function balanceOf(address owner) view returns (uint256)',
];

const ASSET_ABI = [
  'function balanceOf(address account, uint256 id) view returns (uint256)',
  'function balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])',
];

// Polygon Mainnet адреси
const LAND_CONTRACT = '0x50f5474724e0Ee42D9a4e711ccFB275809Fd6d4A';
const ASSET_CONTRACT = '0xa342f5D851E866E18ff98F351f2c6637f4478dB5';

async function getUserSandboxAssets(userAddress: string) {
  const provider = new ethers.JsonRpcProvider('https://polygon-rpc.com');
  
  const landContract = new ethers.Contract(LAND_CONTRACT, LAND_ABI, provider);
  const assetContract = new ethers.Contract(ASSET_CONTRACT, ASSET_ABI, provider);
  
  // Отримуємо кількість LAND токенів
  const landBalance = await landContract.balanceOf(userAddress);
  
  // Отримуємо всі LAND tokenIds
  const landIds: bigint[] = [];
  for (let i = 0; i < Number(landBalance); i++) {
    const tokenId = await landContract.tokenOfOwnerByIndex(userAddress, i);
    landIds.push(tokenId);
  }
  
  return { landIds, landCount: Number(landBalance) };
}

Game Maker SDK — програмна логіка

The Sandbox Game Maker підтримує TypeScript для кастомної ігрової логіки:

// Приклад ігрового скрипту в Game Maker SDK
import { engine, Entity, web3 } from '@sandbox/game-sdk';

// Івент при входу гравця у зону
engine.onPlayerEnter('exclusive_zone', async (player) => {
  const walletAddress = await web3.getPlayerWallet(player.id);
  
  // Перевіряємо наявність LAND у потрібному квадраті
  const hasLand = await checkLandOwnership(walletAddress);
  
  if (hasLand) {
    player.showMessage('Добро пожаловать, владелец LAND!');
    player.grantAccess('vip_area');
  } else {
    player.showMessage('Для доступу необхідний LAND NFT');
    player.redirectTo('marketplace');
  }
});

// Покупка ASSET всередину гри
engine.onPlayerInteract('shop_npc', async (player, npc) => {
  const items = await fetchAvailableItems();
  npc.openShop(player, items);
});

Marketplace API інтеграція

const SANDBOX_API = 'https://api.sandbox.game';

async function getMarketplaceListing(assetId: string) {
  const response = await fetch(`${SANDBOX_API}/v1/assets/${assetId}`);
  return response.json();
}

async function getUserCreations(walletAddress: string) {
  const response = await fetch(
    `${SANDBOX_API}/v1/assets?creator=${walletAddress}&status=published`
  );
  return response.json();
}

// Листинг власного ASSET на маркетплейсі
async function listAssetForSale(assetId: string, priceInSand: string) {
  // Вимагає підпису транзакції через MetaMask
  const provider = new ethers.BrowserProvider(window.ethereum);
  const signer = await provider.getSigner();
  
  // Approve SAND токен для контракту маркетплейсу
  const sandContract = new ethers.Contract(SAND_TOKEN, ERC20_ABI, signer);
  await sandContract.approve(MARKETPLACE_CONTRACT, ethers.MaxUint256);
  
  // Створюємо листинг через Exchange контракт
  const marketplace = new ethers.Contract(MARKETPLACE_CONTRACT, MARKETPLACE_ABI, signer);
  await marketplace.createListing(assetId, ethers.parseEther(priceInSand));
}

LAND координати та метадані

LAND в Sandbox має координати (x, y) на карті. Через The Graph можна отримати дані:

query GetLandDetails($tokenId: String!) {
  land(id: $tokenId) {
    id
    x
    y
    owner {
      address
    }
    estate {
      id
    }
    tokenURI
  }
}

Розробка інтеграції з The Sandbox (перевірка власності, ігрова логіка, маркетплейс): 3–5 тижнів залежно від складності ігрового досвіду.