W33 — система криптовалютного эквайринга, состоящая из двух основных компонентов:
- Backend (w33-server): NestJS REST API для обработки криптовалютных транзакций
- Frontend (w33-client): Vue 3 веб-приложение для управления проектами и кошельками
- Framework: NestJS 10.x (Node.js)
- База данных: MongoDB (Mongoose ODM)
- Real-time: Socket.io для WebSocket соединений
- Документация: Swagger/OpenAPI
- Блокчейн: Поддержка Ethereum, Tron, Binance Smart Chain, Base
- Библиотеки: ethers.js, tronweb, @ton/core для работы с блокчейнами
- Регистрация и управление проектами
- Генерация API ключей трех типов:
OWNER— полный доступDEV— технический доступ (без изменения настроек)GUEST— только чтение
- Создание основных кошельков проекта для накопления средств
- Создание пользовательских кошельков
- Генерация адресов для пополнения (ETH, TRX, BNB, BASE)
- Управление активами кошельков
Обработка транзакций через сервисы:
- ExtractionService: Извлечение транзакций из блокчейнов
- ReceiptionService: Обработка входящих транзакций (пополнения)
- PendingService: Управление транзакциями в статусе pending
- SenderService: Отправка исходящих транзакций (выводы)
- FailLiquidatorService: Обработка failed транзакций
- TaxGrabberService: Сбор комиссий с проектов
Статусы транзакций:
REQUESTED— запрошеноTRANSACTION— в процессеPENDING— ожидается ответRECEIPTING— ожидается подтверждениеCONFIRMED— подтвержденоFAIL— ошибкаCANCELED— отменено
Работа с блокчейнами:
- EthereumModule: Ethereum, BSC, Base сети
- TronModule: Tron сеть
- BlockModule: Отслеживание блоков
- Поддержка ERC20 токенов через Multicall
- Обработка пропущенных блоков
- Отправка webhook'ов проектам о статусах транзакций
- Валидация callback через secret (SHA256 hash)
- Поддержка IP whitelist
- Хранение и валидация API ключей
- Типизация доступа по уровням
- Шифрование секретов
- Отслеживание балансов кошельков
- Обновление балансов в реальном времени
- WebSocket соединения для real-time обновлений
- Уведомления о транзакциях
- События для фронтенда
- Валидация транзакций
- Проверка балансов
- Мониторинг состояния системы
- Интеграция с 8Lends протоколом
- Обработка специфичных транзакций
- Управление инвойсами
- Генерация платежных ссылок
- Управление продуктами
- Связь с проектами
- APIKeyGuard: Проверка наличия API ключа
- ApiKeyTypesGuard: Проверка уровня доступа ключа
- RateLimiterGuard: Ограничение запросов (50 req/sec по умолчанию)
- Поддержка окружений:
testnet,mainnet,gfi - Настройки через
settings.ts:- Поддерживаемые монеты и сети
- Лимиты и комиссии
- Параметры rate limiting
- Интервалы сборки комиссий
- Ethereum (ETH): ETH, USDT, USDC, SOL, XAUT, WBTC
- Binance Smart Chain (BNB): BNB, USDT, USDC, TRX, ETH, SOL, GFI, DEL, WBTC
- Tron (TRX): TRX, USDT, USDC, BTC, IVFUN
- Base: ETH, USDC, 8LNDS
- Framework: Vue 3 (Composition API)
- UI: Vuetify 3
- State Management: Pinia
- Routing: Vue Router 4
- i18n: vue-i18n (поддержка 13 языков)
- Real-time: Socket.io client
- Build: Vite 4
- auth/: Компоненты аутентификации
- wallet/: Управление кошельками
- transactions/: Отображение транзакций
- settings/: Настройки проекта
- ui/: Переиспользуемые UI компоненты
- Home: Главная страница
- Dash: Дашборд с статистикой
- Wallets: Управление кошельками
- Settings: Настройки проекта
- Invoice: Управление инвойсами
- API: Документация API
- FAQ: Часто задаваемые вопросы
- Partner: Партнерская программа
- app.ts: Глобальное состояние приложения
- actions.ts: Действия для работы с API
- state.ts: Типы состояний
Поддержка языков: ru, en, es, fr, hi, hy, it, ja, ka, ko, tr, uk, zh
- Клиент отправляет POST
/api/projectс параметрами проекта - Система генерирует:
- 3 API ключа (OWNER, DEV, GUEST)
- Основные кошельки проекта (ETH, TRX, BNB, BASE)
- Для активации необходимо отправить любую сумму на любой адрес проекта
- Клиент отправляет POST
/api/walletс API ключом - Система генерирует адреса для всех поддерживаемых сетей
- Возвращается
_idкошелька и массив адресов
- Пользователь отправляет криптовалюту на адрес кошелька
- ExtractionService отслеживает новые блоки в блокчейнах
- ReceiptionService обрабатывает входящую транзакцию
- Система отправляет callback на
callbackUrlпроекта с:- Данными транзакции
secretдля валидации (SHA256(hash + apiKey))
- Статус транзакции меняется:
PENDING→RECEIPTING→CONFIRMED
- Клиент отправляет POST
/api/transaction/sendс параметрами:network: eth/trx/bnb/basesymbol: ETH/USDT/USDC и т.д.amount: суммаtoAddress: адрес получателя
- SenderService создает транзакцию и отправляет в блокчейн
- Статус:
REQUESTED→TRANSACTION→PENDING→CONFIRMED - Отправляется callback о статусе вывода
Проект должен валидировать callback:
isValid(hash: string, secret: string): boolean {
const apiKey = process.env.DEV_KEY;
return secret === crypto.createHash('sha256')
.update(hash + ':' + apiKey)
.digest('hex');
}- Периодическое сканирование новых блоков через
ScheduleModule - Обработка пропущенных блоков через
MissedBlockсхему - Использование Multicall для batch запросов балансов
- API ключи с уровнями доступа
- IP whitelist для проектов
- Rate limiting (50 req/sec)
- Валидация callback через secret
- Шифрование приватных ключей
- Event-driven архитектура через
EventEmitterModule - WebSocket для real-time обновлений
- Bottleneck для контроля нагрузки на RPC узлы
- Поддержка нескольких окружений (testnet/mainnet/gfi)
- Telegram бот для уведомлений
- Swagger для API документации
- Автогенерация TypeScript SDK из OpenAPI схемы
cd w33-server
npm install
npm run build
npm run start:prodcd w33-client
npm install
npm run build
npm run preview:ssr # для SSR
# или
npm run preview # для SPABackend требует переменные окружения:
VERSION: testnet/mainnetPORT: порт сервераDB_URL: MongoDB connection string- RPC endpoints для блокчейнов
- Приватные ключи для кошельков
Frontend требует:
- API endpoint для backend
- Socket.io endpoint
- Настройки i18n