test_balance_query_monad.mjs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { ethers } from "ethers";
  2. // 设置 RPC URL
  3. const rpcUrl = "https://testnet-rpc.monad.xyz";
  4. // 初始化 ethers.js 提供器
  5. const provider = new ethers.JsonRpcProvider(rpcUrl);
  6. // 检查是否连接成功
  7. async function checkConnection() {
  8. try {
  9. const network = await provider.getNetwork();
  10. console.log(`已成功连接到链节点,网络ID为: ${network.chainId}。正在查询钱包余额...`);
  11. return true;
  12. } catch (error) {
  13. console.log("无法连接到链节点,请检查 URL 是否正确");
  14. return false;
  15. }
  16. }
  17. // 替换为实际的钱包地址列表
  18. const walletAddresses = [
  19. "0x10A43E7Fe77E2D84adBeC26cF0bFc6f403841266",
  20. "0x70D5EE1DfddD3726f0D71F4CD5a8ef43aC651a75"
  21. ];
  22. async function queryBalances() {
  23. const isConnected = await checkConnection();
  24. if (!isConnected) {
  25. return;
  26. }
  27. for (const walletAddress of walletAddresses) {
  28. let retryCount = 0;
  29. const maxRetries = 3;
  30. const delay = 2000; // 延迟时间,单位为毫秒
  31. let resultMessage = "";
  32. let resultBalance = -1;
  33. while (retryCount < maxRetries) {
  34. try {
  35. // 查询余额
  36. const balance = await provider.getBalance(walletAddress);
  37. // 将余额从 Wei 转换为 Ether
  38. const balanceEth = ethers.formatUnits(balance, 18);
  39. resultMessage = `Wallet address: ${walletAddress}, balance: ${balanceEth} Token`;
  40. resultBalance = balanceEth;
  41. console.log(resultMessage);
  42. break;
  43. } catch (e) {
  44. console.log(`查询钱包 ${walletAddress} 余额时发生错误: ${e.message}`);
  45. retryCount += 1;
  46. console.log(`正在重试...(第 ${retryCount} 次)`);
  47. await new Promise((resolve) => setTimeout(resolve, delay));
  48. }
  49. }
  50. if (retryCount === maxRetries) {
  51. resultMessage = `钱包 ${walletAddress} 查询余额失败,已达到最大重试次数。`;
  52. console.log(resultMessage);
  53. }
  54. }
  55. }
  56. queryBalances();