Розробка системи крипто-донатів

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

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

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

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

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

Розробка системи крипто-донатів

Задача на перший погляд проста: прийняти крипту від донатера. Але у цьому потоці одразу кілька нетривіальних запитань — як показати статус в реальному часі, як працювати з розними сітями та токенами, що робити з пилом (dust) після газу, та як не втратити донат при реорге сіті.

Мінімальна життєздатна схема

Для разових або малообсягових потоків донатів не потрібна складна інфраструктура. Схема з однією адресою:

  1. Публікуєте одну адресу (ETH/BTC/SOL) на сторінці
  2. Webhook-мониторинг через провайдера (Alchemy Notify, Moralis Streams, QuickNode Streams)
  3. Webhook триггерить бекенд → оновлює UI донатера в real-time
// Alchemy Notify webhook handler
app.post('/webhook/donations', express.raw({type: 'application/json'}), async (req, res) => {
    const isValid = verifyAlchemySignature(req.body, req.headers['x-alchemy-signature'], WEBHOOK_SECRET)
    if (!isValid) return res.sendStatus(401)

    const payload = JSON.parse(req.body.toString())

    for (const activity of payload.event?.activity || []) {
        if (activity.toAddress.toLowerCase() === DONATION_ADDRESS.toLowerCase() && activity.value > 0) {
            await db.donations.create({
                txHash: activity.hash,
                fromAddress: activity.fromAddress,
                amount: activity.value,
                asset: activity.asset,
                status: 'pending'
            })
            io.emit('new_donation', { amount: activity.value, asset: activity.asset })
        }
    }
    res.sendStatus(200)
})

Webhook надійніший за polling: Alchemy/QuickNode ретраять доставку при помилці, та ви не пропустите транзакцію.

Підтвердження: коли вважати донат отриманим

Не вважайте донат остаточним за першим сповіщенням. Для ETH mainnet — мінімум 6 підтверджень, для L2 (Arbitrum, Base, Optimism) — 1–2 достатньо (finality у L2 швидше, реорги рідкі). Для BTC — 1 підтвердження для малих сум, 3+ для крупних.

Статус-машина для доната:

  • detected — транзакція у mempool
  • confirming — включена у блок, чекаємо підтверджень
  • confirmed — досягнуто нужне число підтверджень, донат засчитан
  • failed — реорг або dropped транзакція

Віджет для стрімерів / real-time сповіщення

Найпоширеніший сценарій: стрімер хоче отримувати крипто-донаты з pop-up сповіщенням в OBS. Архітектура:

Blockchain → Webhook Provider → Backend API → WebSocket (Socket.io) → OBS Browser Source

Віджет — HTML сторінка з WebSocket підключенням:

<!-- OBS Browser Source URL: https://yourapp.com/widget?streamer_id=123 -->
<script>
const socket = io('wss://yourapp.com')
socket.on('donation', (data) => {
    showDonationAlert(data.sender, data.amount, data.currency, data.message)
})
</script>

Мультивалютність без лишної складності

Для невеликої системи — приймати USDC/USDT на кількох сітях плюс нативний ETH. Це покриває 90% аудиторії. Давати донатеру вибір сіті — ETH mainnet, Arbitrum, Base, Polygon — це знижує бар'єр (газ на L2 дешевше).

Ідентифікація донації за сітю + адресою + токеном:

def identify_donation(network: str, token: str, amount: float, tx_hash: str) -> Donation:
    usd_value = convert_to_usd(token, amount, network)
    return Donation(
        tx_hash=tx_hash,
        network=network,
        token=token,
        raw_amount=amount,
        usd_value=usd_value,
        confirmed=False
    )

Повна система з real-time віджетом, мультисітевим прийомом та дашбордом: 3–5 днів розробки.