Вирішення проблеми мультикриптовалютних платежів
Зазначимо: коли бізнес вирішує приймати криптовалюти, часто уявляють просту кнопку «Сплатити в BTC». Реальність складніша: система має розуміти UTXO-модель Bitcoin, account-based модель EVM з її ERC-20 токенами, а також Solana з SPL-стандартом — і все це без втрати коштів. Помилка у виборі архітектури може призвести до втрати транзакції або порушення compliance. На основі 50+ проєктів ми виробили універсальну схему, що покриває 90% потреб. Ми пропонуємо надійну підтримку криптовалют для вашого бізнесу з фокусом на безпеку криптовалютних платежів. Ми вирішуємо проблему мультивалютних платежів, забезпечуючи прийом Bitcoin, Ethereum, USDT (ERC-20 і TRC-20), Solana USDC та інших токенів. Кастомний крипто-платіжний шлюз дає повний контроль над комісіями, часом підтвердження та безпекою. В одному з нещодавніх кейсів ми інтегрували 7 мереж за 10 робочих днів, забезпечивши наскрізну видимість платежів у реальному часі. Використовуємо Foundry для компіляції смарт-контрактів та viem для моніторингу EVM-мереж. Кожна інтеграція включає налаштування підтверджень: для Bitcoin мінімум 3, для EVM — 12 блоків, для Solana — фіналізований слот. Це скоротило кількість помилкових зарахувань до нуля.
Який варіант архітектури обрати для вашого об'єму?
Вибір архітектури зводиться до трьох варіантів. Кастомна інтеграція окупається в 2 рази швидше готового провайдера при щомісячних обсягах від $50 000 — економія на комісіях може досягати $2 000 на місяць. За нашими даними, кастомний шлюз в 2 рази ефективніший за готові рішення при обсягах від $50,000 на місяць.
| Критерій | Готовий провайдер | Кастомна інтеграція | Гібридний підхід |
|---|---|---|---|
| Час запуску | 1-2 дні | 2-4 тижні | 1-2 тижні |
| Комісія на транзакцію | 0.5-1% | 0% (тільки газ мережі) | 0% для EVM, ~0.5% для BTC |
| Контроль над UX | Обмежений | Повний | Високий |
| Vendor lock-in | Є | Немає | Частковий |
| Окупність при обсязі >$50k/міс | Не окупається | 3-6 місяців | 6-12 місяців |
При щомісячному обсязі понад $50 000 кастомна інтеграція окупається за 3–6 місяців, заощаджуючи від $1 500 на комісіях порівняно з готовими провайдерами. Наприклад, при обсязі платежів $100,000 на місяць кастомний шлюз економить $2,000 порівняно з готовими провайдерами.
Як генерувати адреси для всіх мереж з одного seed (HD wallet BIP44)?
Зазначимо: як вказано в BIP-44, ієрархія: m / purpose' / coin_type' / account' / change / address_index. Для кожного нового платежу генерується нова адреса через інкремент address_index. Один master seed (BIP-39 мнемонічний ключ) детерміністично генерує ієрархічні адреси для всіх мереж відповідно до BIP-44 специфікації.
from hdwallet import HDWallet
def derive_address(master_seed: str, coin_type: int, index: int) -> str:
wallet = HDWallet()
wallet.from_mnemonic(master_seed)
# BTC: coin_type=0, ETH: coin_type=60, SOL: coin_type=501
wallet.from_path(f"m/44'/{coin_type}'/0'/0/{index}")
return wallet.p2pkh_address() # для BTC
# wallet.address() для ETH
Приклад генерації адрес
Для Bitcoin використовуємо coin_type=0, для Ethereum coin_type=60, для Solana coin_type=501. Зберігайте address_index в БД і монотонно збільшуйте його, ніколи не перевикористовуйте адреси.
Важливо: address_index має монотонно зростати та зберігатися в БД. Ніколи не перевикористовувати адреси — це порушує privacy та ускладнює reconciliation.
Інтеграція по мережах
EVM-мережі (Ethereum, Polygon, BSC, Arbitrum, Base) — Ethereum платежі та інші
Одна кодова база — кілька RPC endpoint'ів. Моніторинг Transfer подій ERC-20 + нативних ETH/MATIC переводів.
import { createPublicClient, http, parseAbi } from 'viem';
import { mainnet, polygon, arbitrum } from 'viem/chains';
const chains = [
{ chain: mainnet, rpc: process.env.ETH_RPC, tokens: ETH_TOKENS },
{ chain: polygon, rpc: process.env.POLY_RPC, tokens: POLY_TOKENS },
{ chain: arbitrum, rpc: process.env.ARB_RPC, tokens: ARB_TOKENS },
];
// Єдиний обробник для всіх EVM мереж
async function watchEVMPayment(client, tokenAddress, recipientAddress, orderId) {
return client.watchContractEvent({
address: tokenAddress,
abi: ERC20_ABI,
eventName: 'Transfer',
args: { to: recipientAddress },
onLogs: (logs) => handlePayment(logs, orderId),
});
}
Bitcoin: чому ми рекомендуємо Fulcrum для Bitcoin платежів
Bitcoin UTXO-модель — немає «балансу», є набір unspent outputs. Адреса вважається оплаченою, коли на неї прийшли UTXO з потрібною сумою. Варіанти інтеграції: Electrum Protocol (ElectrumX/Fulcrum) — blockchain.scripthash.subscribe для підписки на зміни адреси; BlockCypher/Mempool.space API — без власної інфраструктури; Bitcoin Core + ZMQ — повна нода з ZeroMQ нотифікаціями. Для production рекомендуємо Fulcrum (швидка SPV-сумісна нода) + власний Bitcoin Core в pruned mode. Підтвердження Bitcoin: 1 підтвердження (~10 хвилин) — для невеликих сум, 3+ — стандарт, 6 — для великих платежів. Застосовуємо стратегію sweep на мультипідписний гаманець для підвищення безпеки.
TRON (USDT TRC20)
TRON — окремий випадок через популярність USDT TRC20 в СНД та Азії. API через TronGrid (HTTP) або власна нода. Адреси в Base58Check форматі (починаються з T).
import tronpy
client = tronpy.Tron(network='mainnet')
def check_trc20_payment(address: str, contract: str, min_amount: int) -> list:
txns = client.get_token_trc20_transfers(
contract_address=contract,
to_address=address,
min_timestamp=int((time.time() - 3600) * 1000)
)
return [tx for tx in txns if tx['value'] >= min_amount]
Solana USDC та SPL-токени
Згідно з документацією Solana, кожен токен має свій Associated Token Account (ATA) для кожного гаманця. Адреса для прийому USDC — не сам гаманець, а його ATA для USDC.
import { getAssociatedTokenAddress } from '@solana/spl-token';
const usdcMint = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');
const paymentATA = await getAssociatedTokenAddress(usdcMint, paymentKeypair.publicKey);
Solana фінальність: при використанні commitment level finalized — ~32 слоти (~13 секунд).
Єдина система моніторингу станів платежів
Незалежно від мережі, платіж проходить через один стан: pending_payment -> mempool_detected -> confirmed (N conf) -> settled. PostgreSQL схема:
CREATE TABLE payment_orders (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
order_id VARCHAR(100) UNIQUE NOT NULL,
currency VARCHAR(20) NOT NULL,
network VARCHAR(20) NOT NULL,
payment_address VARCHAR(200) NOT NULL,
expected_amount NUMERIC(30, 8) NOT NULL,
received_amount NUMERIC(30, 8) DEFAULT 0,
tx_hash VARCHAR(200),
confirmations INTEGER DEFAULT 0,
required_confirmations INTEGER NOT NULL,
status VARCHAR(30) DEFAULT 'pending',
expires_at TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
INDEX idx_payment_address (payment_address),
INDEX idx_status_expires (status, expires_at)
);
Для наочності, рекомендовані числа підтверджень:
| Мережа | Рекомендоване число підтверджень | Час одного блоку |
|---|---|---|
| Bitcoin | 3-6 | ~10 хвилин |
| Ethereum | 12 | ~12 секунд |
| Solana (finalized) | 1 | ~13 секунд |
| Tron | 19 | ~3 секунди |
Як захиститися від волатильності: курси та tolerance?
Користувач бачить «сплатіть 0.001523 BTC» — курс зафіксовано на 15-30 хвилин. За цей час курс може змінитися на 1-2%. Потрібен tolerance: для стейблкоїнів 0.1%, для BTC 1%, для ETH 1.5%. Курси з мінімальною затримкою: CoinGecko API (безкоштовно, кеш 60 сек) або Binance WebSocket (реальний час, для high-frequency).
Безпека: що ми гарантуємо
- Приватні ключі ніколи не на веб-сервері. HD-гаманець seed в HSM або мінімум в зашифрованому сховищі (AWS KMS, HashiCorp Vault).
- Sweep транзакції — автоматичний переказ отриманих коштів на холодний гаманець за розкладом або за порогом суми.
- Double-spend protection — для BTC і ETH не підтверджувати платіж по першому unconfirmed. Налаштувати required_confirmations адекватно сумі.
- Адресна валідація — перед збереженням адреса проходить checksum-валідацію (EIP-55 для ETH, Base58Check для BTC). Помилка в адресі = втрата коштів. Реалізовано механізм reorg-захисту на основі глибини конфірмацій.
При вартості однієї транзакції $100 комісія в мережі Ethereum становить ~$2, але при кастомному шлюзі ви контролюєте газ і можете знизити її до $0.50. Для 1000 транзакцій на місяць економія складе $1 500.
Як вибрати між кастомним шлюзом і готовим провайдером?
Кастомна інтеграція окупається в 2 рази швидше готового провайдера при обсягах понад $50 000/міс. При об'ємі $100 000/міс економія на комісіях може досягати $2 000 щомісяця.
Що входить в нашу роботу
- Документація архітектури та схема потоків транзакцій.
- Вихідний код інтеграції з кожною мережею (EVM, Bitcoin, Tron, Solana).
- Інфраструктурні скрипти для розгортання RPC-вузлів або конфігурації провайдерів.
- Інструкції з експлуатації та відновлення після збоїв.
- Навчання вашій команді роботі з системою.
- Підтримка протягом першого місяця після запуску.
Процес впровадження
- Аналітика (1-2 дні): визначаємо потрібні валюти, обсяги, географію (TRON популярний в СНД/Азії), вимоги до підтверджень.
- Інфраструктура (2-4 дні): налаштовуємо RPC-провайдери або власні ноди, інтегруємо HD wallet, проектуємо схему БД.
- Моніторинг (3-4 дні): розробляємо worker-и для кожної мережі, логіку підтверджень, webhook-нотифікації.
- Тестування (1-2 дні): testnet для EVM і Solana, Bitcoin testnet, edge cases (underpayment, overpayment, expired order, reorg).
Разом 1-2 тижні залежно від кількості мереж. Зв'яжіться з нами для оцінки точних термінів під ваш проєкт. Ми пропонуємо впровадження під ключ — залиште заявку, ми оцінимо ваш проект безкоштовно.
Наш досвід: більше 5 років на ринку криптовалютних рішень, успішні кейси для 50+ клієнтів. Замовте аудит поточної інфраструктури — ми знайдемо вузькі місця.







