Feature: Solana Integration
bountyhunter-blockchain-p2 cung cấp khả năng tương tác sâu với mạng Solana, hỗ trợ cả NFT truyền thống và Compressed NFT (cNFT), cùng với các logic Marketplace và Rental tùy chỉnh.
1. Kiến trúc & Công cụ
- Web3.js:
@solana/web3.jscho các tương tác cơ bản (Connection, Transaction). - Metaplex:
- Umi: Framework mới của Metaplex để tối ưu hóa việc tạo và gửi transaction.
- mpl-bubblegum: Chuyên biệt cho Compressed NFTs (cNFTs) sử dụng Merkle Trees giúp giảm chi phí minting đáng kể.
- mpl-token-metadata: Xử lý Metadata cho NFT chuẩn.
- Anchor: Sử dụng để giao tiếp với các Custom Programs (Smart Contracts) về Marketplace và Rental.
2. Các chức năng chính
2.1 Quản lý NFT
- Minting: Hỗ trợ mint NFT theo batch (cả cNFT và NFT thường).
- Transfer:
userTransferNft: User tự gửi NFT (yêu cầu private key đã giải mã).adminTransferNft: Admin điều phối việc gửi NFT từ ví tổng.
- Ownership Verification: Kiểm tra quyền sở hữu NFT của một địa chỉ ví cụ thể.
2.2 Marketplace & Rental (Custom Programs)
Sử dụng các Program Derived Addresses (PDAs) để quản lý trạng thái: - Marketplace State: Lưu trữ cấu hình chung của chợ. - Escrow PDA: Giữ NFT trung gian trong quá trình niêm yết (listing). - Listing Account: Chứa thông tin về giá, người bán, và token đang bán.
Các lệnh chính:
- listNft: Niêm yết NFT lên chợ.
- buyNft: Mua NFT từ người bán hoặc từ Admin.
- createRental: Tạo lệnh cho thuê NFT.
- rentNft: Thực hiện thuê NFT.
3. Quy trình bảo mật (Key Management)
- Admin Keys: Private key của Admin được lưu trong Azure Key Vault dưới dạng mã hóa. Khi service khởi tạo, nó sẽ lấy secret, giải mã và tạo
adminKeypair. - User Keys: Khi thực hiện các tác vụ thay mặt user (như transfer), service nhận private key đã mã hóa từ request, giải mã bằng
secretKeyvàivnội bộ trước khi ký transaction.
4. Tối ưu hóa phí (Gas/Compute Units)
- Hệ thống sử dụng
setComputeUnitLimitvàsetComputeUnitPricetừ Metaplex ToolBox để đảm bảo transaction được ưu tiên xử lý trong các thời điểm mạng Solana bị tắc nghẽn (Congestion).