Specyfikacja integracji systemu płatności kryptowalutowych
Aby zwiększyć elastyczność płatności i globalny dostęp użytkowników, planujemy zintegrować natywną funkcjonalność płatności kryptowalutowych na naszej stronie internetowej. System musi wspierać odbiór aktywów i monitorowanie transakcji w głównych sieciach blockchain, z bezpośrednimi połączeniami do natywnych węzłów RPC każdej sieci (nie agregatorów zewnętrznych), zapewniając bezpieczeństwo, kontrolę i zgodność z zasadami zdecentralizowanymi.
Docelowe sieci blockchain
Następujące blockchainy oraz ich odpowiednie natywne aktywa i standardy tokenów muszą być wspierane:
- Bitcoin (BTC): Natywne transfery Bitcoin
- Ethereum (ERC-20): Wsparcie dla USDT, USDC i innych tokenów ERC-20
- BNB Smart Chain (BEP-20): Wsparcie dla BUSD, USDT-BSC i innych tokenów BEP-20
- TRON (TRC-20): Wsparcie dla USDT-TRC20 i innych tokenów TRC-20
- Solana (SPL): Wsparcie dla USDC, USDT i innych tokenów standardu SPL
- TON (The Open Network): Wsparcie dla natywnych monet TON i tokenów standardu Jetton
Podstawowe wymagania funkcjonalne
1. Generowanie i zarządzanie adresami portfeli
- Dynamiczne generowanie unikalnych adresów depozytowych kryptowalut dla każdego użytkownika (izolowane portfele lub adresy pochodne)
- Zintegrowany system zarządzania adresami wielołańcuchowymi
2. Monitorowanie transakcji w czasie rzeczywistym i potwierdzenie
- Polling lub subskrypcja danych blokowych za pośrednictwem natywnych punktów końcowych RPC dla każdej sieci
- Wykrywanie przychodzących transakcji (zarówno transfery natywnych monet, jak i tokenów)
- Walidacja legalności transakcji (np. liczba potwierdzeń, kwota, adres odbiorcy)
3. Zautomatyzowana agregacja funduszy (czyszczenie portfela zimnego)
- Automatyczne przenoszenie funduszy do głównego/zimnego portfela, gdy saldo użytkownika przekroczy zdefiniowany próg
- Obsługa opłat za gaz/energię podczas czyszczenia (z automatycznym doładowaniem, jeśli to konieczne)
- Wsparcie dla zarządzania opłatami w różnych sieciach (np. energia/szerokość pasma na BSC/Tron)
4. Funkcjonalność wypłat
- Umożliwienie wypłat z głównego portfela na zewnętrzne adresy zarówno dla natywnych monet, jak i tokenów
- Zapewnienie śledzenia statusu transakcji i logowania w bazie danych
5. Bezpieczeństwo i kontrola ryzyka
- Klucze prywatne muszą być przechowywane offline; nigdy nie ujawniane w kodzie aplikacji ani zmiennych środowiskowych
- Użycie portfeli MPC, HSM lub urządzeń do podpisywania sprzętowego do krytycznych operacji
- Wdrożenie procesów zatwierdzania dla dużych wypłat
6. Synchronizacja danych i uzgadnianie
- Utrzymywanie zapisów transakcji on-chain w lokalnej bazie danych
- Zapewnienie interfejsów API do zapytań o status transakcji
- Wsparcie dla konwersji wartości fiat przy użyciu interfejsów API kursów wymiany
7. Architektura wysokiej dostępności
- Integracja kolejek wiadomości (np. Redis + BullMQ) do asynchronicznego przetwarzania i mechanizmów ponownego próbowania
Wymagania dotyczące wdrożenia technicznego
- Połączenie bezpośrednie z **publicznymi lub samodzielnie hostowanymi pełnymi węzłami RPC** dla każdej sieci. Unikaj polegania na bramach zewnętrznych (np. Alchemy, Infura, TronGrid), aby zapewnić autonomię operacyjną.
- Użyj oficjalnie zalecanych SDK dla każdej sieci:
- Bitcoin**: `bitcoinjs-lib` + samodzielnie hostowany `bitcoind` węzeł
- Ethereum/BSC: `ethers.js` lub `web3.js`
- Tron: `tronweb`
- Solana: `@ solana/web3.js`
- TON: `ton`, `ton-core`
Przyszła rozbudowa
- Zaprojektowanie modułowej architektury, aby łatwo dodawać nowe blockchainy (np. Polygon, Avalanche)
- Zapewnienie wewnętrznych interfejsów API dla ręcznego czyszczenia, sprawdzania sald, zatwierdzania wypłat itp.
System ten będzie stanowił kluczowy element naszej infrastruktury finansowej i musi spełniać wysokie standardy **bezpieczeństwa, niezawodności i obserwowalności**, aby zapewnić bezpieczeństwo aktywów użytkowników i ciągłość działalności.