Інтеграція з Layer3 (quest-платформа)
Layer3 — одна з ведучих quest-платформ Web3, яка дозволяє проектам налаштувати on-chain та off-chain завдання для користувачів з верифікацією виконання та наградами у токенах або NFT. Інтеграція потрібна проектам, які хочуть розташовувати квести на Layer3 та верифікувати їх виконання через власний API або смарт-контракт.
Моделі верифікації квестів
Layer3 підтримує два механізми верифікації:
On-chain верифікація: Layer3 дивиться на стан блокчейну — виконав ли користувач транзакцію з заданими параметрами (swap на конкретному DEX, mint NFT, додавання ліквідності). Налаштовується через інтерфейс Layer3 без API з вашої сторони. Підходить для стандартних on-chain дій.
API верифікація: Layer3 відправляє POST-запрос на ваш endpoint з адресою гаманця користувача. Ваш сервер перевіряє, виконав ли цей адрес потрібне дію, та повертає { "result": true/false }. Потрібна для off-chain активностей: підписка на Discord, виконання дії всередину вашого dApp, введення промокода.
Реалізація API верифікації
Endpoint повинен бути доступний по HTTPS. Layer3 передає адресу користувача в тілі запиту:
// POST /api/layer3/verify-quest
import { Request, Response } from "express"
import crypto from "crypto"
interface Layer3VerifyRequest {
address: string
questId?: string
}
export async function verifyLayer3Quest(req: Request, res: Response) {
// Верифікація webhook signature (якщо Layer3 надає секрет)
const signature = req.headers["x-layer3-signature"] as string
const isValid = verifySignature(req.body, signature, process.env.LAYER3_WEBHOOK_SECRET!)
if (!isValid) {
return res.status(401).json({ error: "Invalid signature" })
}
const { address } = req.body as Layer3VerifyRequest
// Ваша бізнес-логіка верифікації
const completed = await checkUserCompletedTask(address)
return res.json({ result: completed })
}
function verifySignature(body: object, signature: string, secret: string): boolean {
const hmac = crypto.createHmac("sha256", secret)
hmac.update(JSON.stringify(body))
const expected = hmac.digest("hex")
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))
}
Endpoint повинен відповідати швидко — Layer3 має timeout близько 10 секунд. Кешуйте важкі перевірки (on-chain запити) у Redis.
Настройка квеста у Layer3 Dashboard
Після деплою API:
- Створюємо квест у Layer3 Dashboard → Add Task → API Verification
- Вказуємо URL вашого endpoint'у
- Опціонально: секрет для HMAC підпису
- Задаємо награду: XP, токени (ERC-20 через вашу казну), NFT
Для токенних наград Layer3 надає смарт-контракт, який керує дистрибуцією. Проект пополняє казну, Layer3 автоматично клеймить награди завершившим квест.
On-chain квести без API
Для стандартних on-chain дій Layer3 відстежує події самостійно:
-
Transferevent з заданим контрактом — mint NFT або отримання токена - Виклик конкретної функції контракту (по selector)
- Баланс токена вище порога
- Snapshot голосування
Налаштування через UI Layer3: вказуємо адресу контракту, event signature або function selector, умова. Перевірка відбувається на стороні Layer3 через їхній indexer — ніщо додатково реалізовувати не потрібно.
Сроки
Настройка Layer3 квеста з on-chain верифікацією без кастомного API — кілька годин. Розробка та деплой API верифікації для off-chain квестів — 1 робочий день включаючи тестування webhook.







