Прийом BNB на BSC: від HD-гаманця до автоматичного збору

Прийом BNB на BSC: від генерації адрес до авто-збору Ви підключаєте криптоплатіжку, але не впевнені, як правильно приймати BNB на BNB Smart Chain (BSC). Завдання нетривіальне: потрібна генерація унікальних адрес, моніторинг транзакцій з підтвердженнями, авто-збір коштів. Ми реалізували понад 20 т

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

Часті запитання

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

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

Прийом BNB на BSC: від генерації адрес до авто-збору

Ви підключаєте криптоплатіжку, але не впевнені, як правильно приймати BNB на BNB Smart Chain (BSC). Завдання нетривіальне: потрібна генерація унікальних адрес, моніторинг транзакцій з підтвердженнями, авто-збір коштів. Ми реалізували понад 20 таких інтеграцій — від MVP до highload-систем на 10 000 транзакцій на день. BNB працює в двох контекстах: нативний BNB на BSC (chainId 56) і BEP-2 BNB на старій Binance Chain. У 99% випадків клієнт обирає BSC — швидше, дешевше, з підтримкою всіх популярних гаманців.

Чому BSC, а не Binance Chain?

Binance Chain (BEP-2) — legacy-мережа з низькою пропускною здатністю та несумісністю з EVM. BSC дає доступ до екосистеми DeFi, стейблкоїнів та готових інструментів моніторингу. Середня комісія на BSC ~$0.03 при 3 gwei та 21000 gas, що в десятки разів дешевше за Ethereum. Крім того, більшість користувачів зберігають BNB саме на BSC.

Вибір RPC-стратегії: нода vs API

Підхід Надійність Вартість Складність
Власна нода BSC Висока (повний контроль) Безкоштовно (свій хостинг) Середня
Публічний RPC (Binance) Середня (5000 запитів/день) Безкоштовно Низька
BscScan API Низька (залежність) Безкоштовно (5 req/s) Мінімальна

Для комерційного прийому рекомендуємо гібрид: власна нода для полінгу та BscScan як fallback. Це дає відмовостійкість та знімає обмеження RPS.

Генерація унікальних адрес через HD-гаманець

Найбезпечніший спосіб — генерувати deposit-адреси з master-seed без зберігання seed на сервері. Використовуємо xpub, який не може витрачати кошти (стандарт BIP44 з derivation path m/44'/714'/0'/0/ для BSC):

import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider("https://bsc-dataseed1.binance.org/"); // З mnemonic — для розробки. У production — xpub без зберігання seed const masterWallet = ethers.Wallet.fromPhrase(process.env.MNEMONIC!); function getDepositAddress(orderId: number): string { return masterWallet.deriveChild(orderId).address; } async function waitForPayment(address: string, expectedAmount: bigint): Promise<string> { return new Promise((resolve) => { provider.on({ address }, (tx) => { if (tx.value >= expectedAmount) { resolve(tx.hash); } }); }); } 

Надійний моніторинг через полінг

WebSocket-підписки на публічних RPC часто обриваються. Використовуємо полінг з перевіркою блоків кожні 3 секунди:

async function checkPayment( depositAddress: string, expectedWei: bigint, fromBlock: number ): Promise<boolean> { const currentBlock = await provider.getBlockNumber(); for (let block = fromBlock; block <= currentBlock; block++) { const blockData = await provider.getBlock(block, true); const incoming = blockData?.transactions.filter( (tx: any) => tx.to?.toLowerCase() === depositAddress.toLowerCase() && BigInt(tx.value) >= expectedWei ); if (incoming && incoming.length > 0) return true; } return false; } 

Підтвердження: на BSC чекаємо мінімум 15 блоків для сум до $1000, 30+ для великих. Реорги рідкісні (<0.1% блоків), але обробник має бути готовий до відкатів.

Прийом USDT/USDC на BEP-20

Часто потрібно приймати стейблкоїни на BSC. Контракт USDT BEP-20: 0x55d398326f99059fF775485246999027B3197955. Моніторинг через event Transfer:

const USDT_BSC = "0x55d398326f99059fF775485246999027B3197955"; const transferInterface = new ethers.Interface([ "event Transfer(address indexed from, address indexed to, uint256 value)" ]); const filter = { address: USDT_BSC, topics: [ ethers.id("Transfer(address,address,address)"), null, ethers.zeroPadValue(depositAddress, 32) ], }; provider.on(filter, (log) => { const { from, to, value } = transferInterface.parseLog(log)!.args; console.log(`Received ${ethers.formatUnits(value, 18)} USDT from ${from}`); }); 

Для перевірки транзакції без сервера використовуйте ethers.js у браузері: підключіться до MetaMask і викличте provider.getTransaction(txHash). Це зручно для налагодження.

Як автоматично збирати кошти з deposit-адрес?

  1. Визначте поріг збору: наприклад, коли баланс deposit-адреси перевищує 0.1 BNB (за вирахуванням резерву на газ).
  2. У cron-воркері раз на годину перевіряйте баланси всіх активних адрес через provider.getBalance(address).
  3. Для кожної адреси з балансом більше порогу ініціюйте транзакцію переказу на основний гаманець.
  4. Залиште на кожній адресі резерв на газ: ~0.0005 BNB при 3 gwei (вистачить на 80 000 gas).
  5. Після відправки дочекайтеся підтвердження (15 блоків) і оновіть статус.

Швидкість збору: 3-5 блоків (15-25 секунд) при 3 gwei. Економія на газах порівняно з індивідуальними переказами — до 40%.

Таблиця: Типові помилки та їх рішення

Помилка Наслідок Рішення
Зберігання seed-фрази на сервері Компрометація всіх коштів Використовуйте xpub для генерації адрес
Ігнорування реоргів Подвійний облік платежів Обробляйте блоки з підтвердженням
Пропуск фільтра isError Облік невдалих транзакцій У BscScan перевіряйте статус
Відсутність резерву газу Авто-збір не спрацює Залишайте 0.0005 BNB на кожній адресі

Що входить у роботу

  • Архітектура: вибір схеми HD-гаманця, RPC-стратегія, обробка помилок реоргу.
  • Генерація адрес: інтеграція з бекендом через REST API, webhook-сповіщення.
  • Моніторинг: полінг з інтервалом 3-5 секунд, фільтрація подій, логування.
  • Авто-збір: cron-воркер з контролем газу та retry-логікою (до 3 спроб).
  • Документація: опис API, інструкція з деплою на Docker/K8s.
  • Підтримка: 1 місяць інцидент-менеджменту та дрібних доопрацювань.

Орієнтири за термінами

  • Базове налаштування нативного BNB: від 1 дня.
  • Додавання BEP-20 токенів та авто-збір: ще 1-2 дні.
  • Інтеграція в існуючий бекенд: +1-3 дні залежно від архітектури.

Отримайте консультацію за вашим проектом — оцінимо складність та терміни безкоштовно.

Додаткова інформація

Згідно з офіційною документацією BSC, для забезпечення безпеки транзакцій рекомендується використовувати власні RPC-ноди при навантаженні понад 1000 запитів на день. Середня вартість хостингу ноди — від $0 (на власному сервері) до $50/місяць на VPS. Економія на комісіях за рахунок внутрішніх переказів може досягати 60% для систем з частими виплатами.

BSC офіційна документація

Замовте впровадження криптоплатіжки з нуля або доопрацювання наявної — ми гарантуємо стабільність і надаємо вихідний код.