Розробка системи quest/task-платформи для крипто-проекту

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

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

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

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

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

Розробка системи quest/task-платформи для крипто-проекту

Quest-платформи — це Galxe, Zealy, Layer3 у ролі моделі. Механіка зрозуміла: користувач виконує завдання (підписується на Twitter, робить swap, тримає токен), отримує XP або NFT. Технічна складність не в самих завданнях, а в верифікації — як довести, що користувач дійсно зробив on-chain дію, а не просто нажав кнопку.

Верифікація завдань: on-chain vs off-chain

Off-chain завдання

Twitter follow, Discord join, email підписка — верифікація через OAuth:

  • Twitter: OAuth 2.0 з PKCE, перевірка через Twitter API v2 (GET /2/users/:id/following)
  • Discord: OAuth2 + Discord Bot API для перевірки членства в серверу та наявності ролі
  • Telegram: Telegram Login Widget + Bot API (getChatMember)

Все це серверна логіка. Важливо зберігати OAuth токени зашифрованими та оновлювати їх — Twitter access token живе 2 години.

On-chain завдання

Це цікавіше та складніше. Типові категорії:

Holder verification — користувач повинен тримати X токенів або NFT визначеної колекції. Верифікація: balanceOf(address) виклик через RPC. Просто, але потрібно розв'язати проблему часу перевірки — баланс міг бути на момент snapshot, а тепер ні.

Transaction verification — користувач зробив swap, надав ліквідність, зробив бридж. Верифікація через індексер або RPC:

// Перевіряємо, робив ли адрес swap на Uniswap v3 за останні N днів
const logs = await publicClient.getLogs({
  address: UNISWAP_V3_ROUTER,
  event: parseAbiItem('event Swap(address indexed sender, address indexed recipient, ...)'),
  args: { recipient: userAddress },
  fromBlock: BigInt(fromBlock),
  toBlock: 'latest',
})
const completed = logs.length > 0

Contract interaction — користувач вивав конкретну функцію вашого контракту. Найнадійніший спосіб: emit event в контракті, індексувати його.

Sybil resistance

Головна проблема quest-платформ — sybil атаки. Один чоловік створює 1000 гаманців, виконує всі завдання, збирає награди. Механізми захисту:

  • Gitcoin Passport — score на основі Web2 та Web3 активності. API: GET /registry/score/:address. Поріг score (наприклад, 15+) відсікає більшість sybil аккаунтів.
  • Proof of Humanity / Worldcoin — biometric proof of unique human. Більш надійно, але friction для користувачів.
  • On-chain activity score — перевіряємо вік гаманця, кількість транзакцій, наявність ETH/активів. Новий гаманець з нульовою історією — червоний флаг.
  • Rate limiting по IP + fingerprint — не безупречно, але відсікає ленивих ботоводів.

Архітектура системи

Backend

REST API (Next.js API routes або Express)
├── /api/quests — список квестів, статус
├── /api/verify/:taskId — верифікація конкретного завдання
├── /api/claim — отримання награди після виконання всіх завдань
└── /api/leaderboard — топ користувачів по XP

PostgreSQL база даних:

  • users: address, twitter_id, discord_id, passport_score
  • quests: id, title, reward_type, reward_amount, requirements JSON
  • task_completions: user_id, task_id, verified_at, proof JSON
  • rewards_claimed: user_id, quest_id, tx_hash

Smart contract для наград

Якщо награда — токени або NFT, потрібен контракт:

contract QuestRewards {
    mapping(address => mapping(uint256 => bool)) public claimed;
    
    function claimReward(
        uint256 questId,
        bytes32[] calldata merkleProof
    ) external {
        require(!claimed[msg.sender][questId], "Already claimed");
        require(
            MerkleProof.verify(merkleProof, questRoots[questId], 
                keccak256(abi.encodePacked(msg.sender))),
            "Invalid proof"
        );
        claimed[msg.sender][questId] = true;
        token.transfer(msg.sender, questRewards[questId]);
    }
}

Merkle tree підхід: бекенд формує список eligible адрес, вважає Merkle root, публікує on-chain. Користувач отримує Merkle proof з сервера та клеймить сам, платячи газ. Це знижує нагрузку на сервер та децентралізує claiming.

Frontend

Ключові екрани:

  • Dashboard — активні квести, прогрес, накопленний XP
  • Quest detail — список завдань зі статусами (locked/available/completed/claimed)
  • Leaderboard — топ учасників, можна робити по неділям/всього
  • Profile — історія наград, connected socials

UX-деталь: статус перевірки завдання не повинен бути синхронним. Користувач нажав "Verify" — показуємо spinner, робимо запит на бекенд, бекенд перевіряє on-chain/off-chain дані, повертає результат. Типовий час — 2–5 секунд для on-chain verification.

Розробка займає 1–2 тижні: базова система з кількома типами завдань, верифікацією та простою системою наград — 1 тиждень. Повна платформа з anti-sybil, Merkle-based claiming, social integrations та leaderboard — 2 тижні.