Thiết kế: NFT Marketplace
Tài liệu này mô tả thiết kế hệ thống Marketplace đa chuỗi trong blockchain service.
1. Marketplace Logic
1.1 Buy from Admin (EVM/Solana)
Admin giữ NFT trong ví tổng. Khi user thực hiện mua, service sẽ trích xuất private key Admin để thực hiện transfer.
1.2 User-to-User (Marketplace Program)
NFT được khóa vào một Escrow account của Marketplace Program (trên Solana) hoặc được Approve cho Marketplace contract (trên EVM).
2. Hệ thống Queue và Trạng thái đơn hàng
Sử dụng Bull MQ để đảm bảo tính nhất quán (Atomicity).
stateDiagram-v2
[*] --> PENDING_LIST: User gửi yêu cầu list
PENDING_LIST --> ON_CHAIN_LIST: Đang ghi lên chuỗi
ON_CHAIN_LIST --> LISTED: Thành công
ON_CHAIN_LIST --> ERROR: Lỗi (RPC, Balance)
LISTED --> SOLD: Có người mua on-chain
LISTED --> CANCELLED: User hủy listing
3. Quản lý Ticket (ERC1155)
Hệ thống xử lý việc "Burn" ticket thông qua một worker chuyên biệt, đảm bảo sau khi burn thành công on-chain mới cập nhật quyền lợi cho user ở database backend.