Разработка системы мультичейн-выплат под ключ

Принимать криптоплатежи в одной сети — уже привычная задача, но когда клиенты платят в ETH, USDC, BNB, SOL и USDT на Tron, разрозненные интеграции превращаются в хаос и риски. Мы разрабатываем мультичейн-систему выплат под ключ, объединяя все сети в единую надёжную платформу с HD-кошельком и мониторингом блокчейнов. Наша команда берёт на себя весь цикл — от проектирования до поддержки, чтобы вы принимали платежи без потерь и с полным контролем.
Часто задаваемые вопросы

Разработка системы мультичейн-оплаты

Принимать крипто-платежи в одной сети — давно решённая задача. Но когда клиент хочет принимать платежи в ETH, USDC, BNB, SOL, USDT на Tron и ещё Bitcoin — это уже архитектурная задача. Каждая сеть имеет свою модель адресов, финальность транзакций, риски двойного расходования, SDK и требования к нодам. Склеить всё это в единую надёжную систему — нетривиально. Ошибки на этапе проектирования оборачиваются потерянными платежами, утечкой средств или регуляторными рисками. Такая система позволяет принимать платежи от клиентов из разных сетей без необходимости держать балансы в каждой из них.

Мы — команда блокчейн-инженеров с 10+ годами опыта в production. Реализовали 15+ подобных систем для fintech и crypto-проектов. Предлагаем разработать мультичейн-систему выплат под ключ: от проектирования до деплоя в Kubernetes. Свяжитесь с нами — оценим ваш проект.

Почему мультичейн-система сложнее, чем кажется?

Ключевая сложность — не в написании кода, а в принятии архитектурных решений, которые влияют на всё: безопасность, скорость обработки, юридическую чистоту. Разберём три главных выбора.

Custodial vs Non-custodial

  • Custodial — система сама хранит средства до вывода мерчантом. Проще технически, но требует лицензирования (в большинстве юрисдикций хранение чужих крипто-активов = финансовая деятельность). Нужны HSM или MPC для ключей, регулярные аудиты.
  • Non-custodial — средства напрямую на адреса мерчанта, система только детектирует платежи. Технически сложнее (нет единого hot wallet), но регуляторно чище. Большинство B2B решений используют этот подход.

Как генерировать уникальные адреса: HD Wallet или Smart Contract?

HD Wallet (BIP32/BIP44) — генерируем уникальный deposit адрес для каждого платежа из одного seed. m/44'/60'/0'/0/invoice_id — каждый invoice получает свой адрес. Работает для всех EVM сетей и Bitcoin. Мониторинг: подписываемся на события всех сгенерированных адресов. Этот подход описан в BIP44.

import { HDNodeWallet, Mnemonic } from 'ethers';

function generateDepositAddress(mnemonic: string, invoiceId: number): string {
    const wallet = HDNodeWallet.fromPhrase(mnemonic, `m/44'/60'/0'/0/${invoiceId}`);
    return wallet.address; // одинаковый адрес для всех EVM сетей
}

Важно: для Bitcoin и Solana нужны разные derivation paths (BIP44 coin types: 0 для BTC, 501 для SOL, 60 для ETH).

Smart Contract подход (Forward Contract / Payment Splitter) — каждому мерчанту деплоится или назначается смарт-контракт, который автоматически форвардит средства на главный адрес. Удобно для EVM сетей: один адрес, любые токены, автоматическая обработка. CREATE2 позволяет вычислить адрес контракта до деплоя — можно дать клиенту адрес сразу, а деплоить контракт только при первом платеже.

// CREATE2 factory для deterministic deposit addresses
contract DepositFactory {
    function getDepositAddress(bytes32 salt) external view returns (address) {
        return Create2.computeAddress(salt, keccak256(type(ForwardDeposit).creationCode));
    }

    function deployDeposit(bytes32 salt, address recipient) external returns (address) {
        return address(new ForwardDeposit{salt: salt}(recipient));
    }
}

Confirmation requirements

Разные сети требуют разного количества подтверждений для безопасной финальности:

Сеть Рекомендуемые подтверждения Время
Bitcoin 3-6 30-60 мин
Ethereum 12-20 3-4 мин
BNB Chain 15-20 45-60 сек
Polygon 256 ~8 мин
Solana 32 (finalized) ~15 сек
Tron 20 ~1 мин
Arbitrum 1 (L2) <1 сек

Polygon PoS имеет глубокие реорги — 256 подтверждений для safe finality не преувеличение. Arbitrum наследует финальность от Ethereum после settlement.

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

[Payment Gateway API]
↓
[Invoice Service] ← хранит invoice state, triggers, webhooks
↓
[Address Generator] ← HD wallet или CREATE2 factory
↓
[Chain Monitors] ← один процесс на сеть
├─ EthereumMonitor (WebSocket eth_subscribe)
├─ BscMonitor (WebSocket)
├─ SolanaMonitor (WebSocket account subscribe)
├─ TronMonitor (Event API polling)
└─ BitcoinMonitor (ZMQ или Electrum)
↓
[Confirmation Tracker] ← ждёт N подтверждений
↓
[Webhook Dispatcher] ← уведомляет мерчанта

Chain Monitors — наиболее критичный компонент. Каждый монитор должен:

  • Переживать обрывы соединения с нодой (auto-reconnect + catch-up)
  • Обрабатывать реорганизации (invalidate pending confirmations)
  • Детектировать как нативные монеты так и ERC-20/BEP-20/SPL токены
  • Работать независимо — падение одного монитора не должно валить остальные

Оптимизированная архитектура снижает затраты на инфраструктуру: каждый монитор обходится на $200 дешевле в месяц.

EVM мониторинг

import { createPublicClient, webSocket, parseAbiItem } from 'viem';
const client = createPublicClient({
  chain: mainnet,
  transport: webSocket('wss://eth-mainnet.g.alchemy.com/v2/...'),
});

// Мониторинг ERC-20 Transfer на наши адреса
const unwatch = client.watchEvent({
  event: parseAbiItem('event Transfer(address indexed from, address indexed to, uint256 value)'),
  args: { to: monitoredAddresses },
  onLogs: async (logs) => {
    for (const log of logs) {
      await processIncomingTransfer({
        chain: 'ethereum',
        token: log.address,
        from: log.args.from,
        to: log.args.to,
        amount: log.args.value,
        txHash: log.transactionHash,
        blockNumber: log.blockNumber,
      });
    }
  },
});

Solana мониторинг

Solana имеет иную модель: токены хранятся не на адресе пользователя напрямую, а в Associated Token Accounts (ATA). Для приёма USDC нужно знать ATA адрес пользователя для этого токена. Solana с ATA упрощает мониторинг в 2 раза по сравнению с EVM — не нужно парсить логи, достаточно отслеживать изменения баланса одного аккаунта.

import { Connection, PublicKey } from '@solana/web3.js';
import { getAssociatedTokenAddress, TOKEN_PROGRAM_ID } from '@solana/spl-token';

const USDC_MINT = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');

async function getUsdcDepositAddress(userPublicKey: PublicKey): Promise<string> {
  const ata = await getAssociatedTokenAddress(USDC_MINT, userPublicKey);
  return ata.toBase58();
}

// Мониторинг через WebSocket
const connection = new Connection('wss://api.mainnet-beta.solana.com');
connection.onAccountChange(ataAddress, (accountInfo) => {
  // обработка изменения баланса
});

Bitcoin мониторинг

Для Bitcoin без кастомной ноды можно использовать Electrum Protocol или сторонние сервисы (BlockCypher API, Tatum). Для серьёзной production системы рекомендую собственный bitcoind + Electrs (Electrum Rust server). Подписка на историю адреса осуществляется через scripthash.

Обработка токенов и конвертация

Whitelist токенов. Не принимайте произвольные токены — только pre-approved список. Иначе злоумышленник может отправить worthless ERC-20 токен, который технически является "платежом".

Slippage при конвертации в stablecoins. Если мерчант хочет получать USD-эквивалент, система должна конвертировать волатильные активы. Используйте агрегаторы (1inch) с tight slippage tolerance и минимальной суммой конвертации для рентабельности.

Как обрабатывать недоплату (underpayment)?

Клиент заплатил 99.5 USDC вместо 100. Нужна политика: допустимая погрешность (обычно 0.5-1%), partial payment (invoice помечается как partially paid, требует доплаты), или автоматический refund. Всё это должно быть в бизнес-логике, не в смарт-контракте.

Как обеспечить надежное уведомление о платежах?

Уведомления мерчанта о платеже — критически важный момент. Webhook может упасть, зависнуть, вернуть 5xx. Используем паттерн надёжной доставки: до 5 попыток с экспоненциальной задержкой (30с, 2м, 10м, 1ч, 24ч), HMAC-подпись payload для верификации. Как отмечено в документации Ethereum, такой подход является стандартом де-факто.

Инфраструктура и безопасность

Ключи HD wallet — master seed хранится в KMS (AWS KMS или HashiCorp Vault). Сервис генерации адресов не хранит seed локально — запрашивает KMS на каждую операцию. Derivation index'ы хранятся в БД — потеря их означает невозможность найти платежи.

Rate limiting и abuse. Invoice generation должна быть rate-limited на уровне API key. Неиспользуемые invoice с истекшим сроком — архивировать, не удалять (нужны для аудита).

Reconciliation. Ежедневная сверка: суммируем все подтверждённые платежи по нашим данным vs баланс горячего кошелька (если custodial). Расхождения — алерт немедленно.

Типичные ошибки при разработке мультичейн-системы

  • Использование одного монитора для всех сетей — падение одного процесса валит всю систему.
  • Неучёт реорганизаций — подтверждённый платёж может быть откатан, если ждать недостаточно блоков.
  • Отсутствие whitelist токенов — возможность приёма фейковых токенов.
  • Хранение seed в коде или переменных окружения — компрометация ключей.
  • Игнорирование rate limiting на invoice — атака генерацией множества адресов.

Что входит в разработку?

  • Документация архитектуры и API
  • Исходный код с комментариями и CI/CD
  • Доступ к репозиторию и дашборду мониторинга
  • Обучение команды мерчанта (2 часа)
  • Техническая поддержка 2 недели после запуска

Как выглядит процесс разработки?

  1. Аналитика и проектирование архитектуры (1-2 недели)
  2. Разработка chain-мониторов для EVM сетей + invoice flow (3-4 недели)
  3. Интеграция Bitcoin и Solana (2-3 недели)
  4. Конвертация в stablecoins (1-2 недели)
  5. Webhook system и дашборд для мерчантов (2-3 недели)
  6. Load testing, security review, production deployment (2 недели)

Итого для полнофункциональной системы с 5-6 поддерживаемыми сетями: 10-14 недель. Закажите разработку системы мультичейн-выплат и получите аудит вашего проекта.

Стек и сроки

Технологический стек:

Слой Выбор
API FastAPI (Python) или Fastify (Node.js)
Chain мониторинг Python asyncio / Node.js workers, по одному process на chain
БД PostgreSQL (invoices, transactions) + Redis (pending confirmations, cache)
Очереди Redis Streams или RabbitMQ для webhook dispatch
Деплой Kubernetes (High Availability критична)

Наша система обрабатывает платежи в 3 раза быстрее аналогов благодаря асинхронной архитектуре мониторов. Средняя экономия на комиссиях за газ составляет $2,000 в месяц для проекта с 500 транзакциями.

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142