bountyhunter-blockchain-p2 - Business Flow
Tài liệu này mô tả cách bountyhunter-blockchain-p2 xử lý các luồng nghiệp vụ blockchain cốt lõi và giao tiếp với hệ thống Backend chính.
1. Luồng Mint & Send NFT Reward (Asynchronous)
Hệ thống sử dụng Bull MQ để xử lý các giao dịch on-chain một cách tin cậy, tránh việc user phải chờ đợi lâu hoặc mất dữ liệu khi RPC lỗi.
sequenceDiagram
participant Backend as Java Backend
participant Nest as Blockchain Service
participant Redis as Queue (Bull MQ)
participant Chain as Blockchain (Solana/EVM)
Backend->>Nest: Request Send NFT Reward (REST API)
Nest->>Redis: Add Job to NFT_REWARD Queue
Nest-->>Backend: Return Success (ACK)
Note over Nest: Worker (Processor) picks up job
Nest->>Chain: Execute Transaction (On-chain)
Chain-->>Nest: Transaction Hash
Nest->>Backend: Sync Result (Webhook/REST API)
Note right of Nest: Updates ownership in DB
2. Luồng Marketplace (Mua/Bán NFT)
Hỗ trợ cả admin và user trong việc giao dịch NFT trên các mạng khác nhau.
graph LR
subgraph "Listing Flow"
L1[Request Listing] --> L2[Verify Ownership]
L2 --> L3[Add to Marketplace Queue]
L3 --> L4[On-chain Listing]
end
subgraph "Buying Flow"
B1[Request Buy] --> B2[Verify Payment]
B2 --> B3[Queue Transfer]
B3 --> B4[On-chain Transfer]
B4 --> B5[Update Owner Sync]
end
3. Đồng bộ hóa đa chuỗi (Multi-chain Sync)
Dịch vụ định kỳ quét hoặc nhận sự kiện từ các chuỗi để đảm bảo dữ liệu trong database backend luôn khớp với thực tế trên chuỗi.
- Solana: Sử dụng Metaplex Umi/Bubblegum để đồng bộ cNFT (compressed NFT).
- EVM: Sử dụng Ethers.js để lắng nghe Event logs (Transfer).
- Key Management: Toàn bộ Private Key của Admin được lưu trữ bảo mật trong Azure Key Vault.
4. Cơ chế Retry & Fault Tolerance
- Bull MQ attempts: Các job blockchain được cấu hình retry nhiều lần (QUEUE_MAX_RETRY) nếu RPC gặp sự cố tạm thời.
- Webhook Sync: Sau khi giao dịch thành công/thất bại on-chain, hệ thống luôn gọi webhook về Backend để cập nhật trạng thái cuối cùng.