Task 2-1: Multi-chain Gasless Expansion (Polygon & Arbitrum)
Phase: 2 Priority: Medium Module:
biconomyDepends on: Không có Reference: docs/bountyhunter-blockchain-p2/details/feature-evm-integration/SPEC.md
Background
Hiện tại Biconomy chỉ được cấu hình cho BNB Testnet (BICONOMY_BNB_TESTNET_BUNDLER_URL, BICONOMY_BNB_TESTNET_PAYMASTER_API_KEY). Các map constant BICONOMY_KEY, SIGNER_RPC, và GASLESS_SUPPORTED_NETWORK tồn tại nhưng chưa có entry cho Polygon PoS và Arbitrum. Người dùng trên các chain này không thể thực hiện giao dịch gasless, buộc phải trả phí gas thủ công hoặc transaction bị từ chối.
Tasks
Note: Constants được định nghĩa trong file constants của module
biconomy(thường làbiconomy.constants.tshoặcconstants/index.ts). Các biến môi trường mới phải được thêm đồng thời vào.env.exampleđể dev khác biết cần cấu hình. Không hardcode API key — chỉ dùngprocess.env.*.
- [ ] Thêm Polygon PoS mainnet vào
BICONOMY_KEYmap:// Thêm vào BICONOMY_KEY constant: [ChainId.POLYGON_MAINNET]: { bundlerUrl: process.env.BICONOMY_POLYGON_BUNDLER_URL, paymasterApiKey: process.env.BICONOMY_POLYGON_PAYMASTER_API_KEY, }, - [ ] Thêm Arbitrum One mainnet vào
BICONOMY_KEYmap tương tự - [ ] Cập nhật
SIGNER_RPCmap thêm RPC URL cho Polygon và Arbitrum:[ChainId.POLYGON_MAINNET]: process.env.POLYGON_RPC_URL, [ChainId.ARBITRUM_ONE]: process.env.ARBITRUM_RPC_URL, - [ ] Thêm
ChainId.POLYGON_MAINNETvàChainId.ARBITRUM_ONEvàoGASLESS_SUPPORTED_NETWORKarray - [ ] Thêm các biến môi trường mới vào
.env.example:BICONOMY_POLYGON_BUNDLER_URL=https://bundler.biconomy.io/api/v2/137/... BICONOMY_POLYGON_PAYMASTER_API_KEY= BICONOMY_ARBITRUM_BUNDLER_URL=https://bundler.biconomy.io/api/v2/42161/... BICONOMY_ARBITRUM_PAYMASTER_API_KEY= POLYGON_RPC_URL=https://polygon-rpc.com ARBITRUM_RPC_URL=https://arb1.arbitrum.io/rpc - [ ] Verify logic trong
handleBiconomySendGaslessNftsử dụngGASLESS_SUPPORTED_NETWORKđể quyết định có dùng Biconomy hay không — không cần sửa nếu đã đúng
Verification / Acceptance Criteria
- [ ] Gửi request gasless NFT với
chainId = POLYGON_MAINNET→ job được xử lý qua Biconomy (không fallback sang non-gasless) - [ ] Gửi request với chain không trong
GASLESS_SUPPORTED_NETWORK→ xử lý qua path thông thường (non-gasless) - [ ]
.env.examplecó đủ các biến mới với comment giải thích - [ ] TypeScript compile không có lỗi —
ChainIdenum có giá trị Polygon và Arbitrum - [ ] Không có hardcoded API key trong source code
Files to Modify
src/biconomy/constants/biconomy.constants.ts(hoặc file constants tương ứng).env.example