Backend API cho NFT Marketplace với tích hợp OpenZeppelin Defender.
- 🔐 Authentication với JWT và Firebase
- 💰 Tự động tạo wallet cho user khi đăng ký
- 🎨 Mint NFT thông qua OpenZeppelin Defender
- 🔄 Transfer NFT an toàn
- 📊 Quản lý transaction history
- 🛡️ Bảo mật với Relayer và Autotasks
Frontend → Backend API → OpenZeppelin Defender → Smart Contract
cd backend
pnpm installcp .env.example .envCập nhật các biến trong .env:
# JWT Configuration
JWT_SECRET="your_jwt_secret_here"
JWT_EXPIRES_IN="7d"
# Firebase Configuration
FIREBASE_PROJECT_ID="your_firebase_project_id"
FIREBASE_PRIVATE_KEY="your_firebase_private_key"
FIREBASE_CLIENT_EMAIL="your_firebase_client_email"
# OpenZeppelin Defender Configuration
DEFENDER_API_KEY="your_defender_api_key"
DEFENDER_API_SECRET="your_defender_api_secret"
# Blockchain Configuration
NETWORK_NAME="polygon-amoy"
RPC_URL="https://rpc-amoy.polygon.technology/"
CONTRACT_ADDRESS="your_contract_address"
CHAIN_ID="80002"
# Server Configuration
PORT=3001
NODE_ENV="development"
FRONTEND_URL="http://localhost:3000"pnpm run setup:defenderScript này sẽ:
- Tạo Relayer cho việc ký transactions
- Deploy các Autotasks (mint, transfer, query)
- Cập nhật environment variables
# Development
pnpm run start:dev
# Production
pnpm run build
pnpm run start:prodPOST /api/auth/register- Đăng ký user mớiPOST /api/auth/login- Đăng nhậpGET /api/auth/profile- Lấy thông tin user
GET /api/wallet/info- Thông tin wallet của userGET /api/wallet/balance/:address- Kiểm tra balance
POST /api/nft/mint- Mint NFT mớiPOST /api/nft/transfer- Transfer NFTGET /api/nft/my-nfts- Lấy NFTs của userGET /api/nft/details/:tokenId- Chi tiết NFTGET /api/nft/transactions- Lịch sử transactions
- Truy cập OpenZeppelin Defender
- Tạo tài khoản và project
- Lấy API Key và Secret
Các Autotasks được tạo tự động bởi script setup:defender:
- Mint Autotask: Xử lý việc mint NFT
- Transfer Autotask: Xử lý việc transfer NFT
- Query Autotask: Truy vấn thông tin NFT
Relayer sẽ được tạo tự động và cần:
- Fund MATIC cho gas fees
- Cấu hình private key trong Autotask secrets
- Private keys được mã hóa trước khi lưu Firebase
- Sử dụng OpenZeppelin Defender Relayer cho transactions
- JWT authentication cho tất cả endpoints
- Validation đầy đủ cho inputs
# Chạy trong development mode
pnpm run start:dev
# Build
pnpm run build
# Lint
pnpm run lint
# Test
pnpm run testSau khi chạy server, truy cập:
- Swagger UI:
http://localhost:3001/api/docs - Health check:
http://localhost:3001/api/health
- Kiểm tra API Key và Secret
- Đảm bảo Relayer có đủ MATIC
- Kiểm tra network configuration
- Kiểm tra Firebase credentials
- Đảm bảo Firestore rules được cấu hình đúng
- Kiểm tra contract address
- Đảm bảo contract đã được deploy
- Kiểm tra RPC URL