query_balance_monad.mjs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. '0xe50B77Cd771243b8Ae1d6ce33b4E13ECC5Fa28a6',
  20. '0x9ea2ECAD4090E32916e03b77d7C75CbF6C8E0A55',
  21. '0xE8A4b0C04300154DC9B1D0e565Ba70F996614690',
  22. '0x1b623c5d70c93b437d93c305bf2cfa389095f636',
  23. '0x06D25c3e0E1F753ac0486a3f8aaD7259149656cB',
  24. '0x15cFEE34Ca4541CAc9a1c4B6F6aB47A65877E240',
  25. '0x7aBF0dA8Ac07B6dE7206e467988455E1AD0b60B5',
  26. '0xF736f45d4663a8D8DfF7EFA55b1Cf6Fe38D026c8',
  27. '0x83173eECf3a6d9ABB79682568e16c2eAd361620e',
  28. '0xa401b85B4849Fc7610Bd180cc937859C78528F47',
  29. '0x10A43E7Fe77E2D84adBeC26cF0bFc6f403841266',
  30. '0x70D5EE1DfddD3726f0D71F4CD5a8ef43aC651a75'
  31. ];
  32. async function queryBalances() {
  33. const isConnected = await checkConnection();
  34. if (!isConnected) {
  35. return;
  36. }
  37. let walletNum = 1;
  38. for (const walletAddress of walletAddresses) {
  39. let retryCount = 0;
  40. const maxRetries = 3;
  41. const delay = 2000; // 延迟时间,单位为毫秒
  42. let resultMessage = "";
  43. let resultBalance = -1;
  44. while (retryCount < maxRetries) {
  45. try {
  46. // 查询余额
  47. const balance = await provider.getBalance(walletAddress);
  48. // 将余额从 Wei 转换为 Ether
  49. const balanceEth = ethers.formatUnits(balance, 18);
  50. resultMessage = `Wallet address: ${walletAddress} ${walletNum}, balance: ${balanceEth} Token`;
  51. resultBalance = balanceEth;
  52. console.log(resultMessage);
  53. walletNum += 1;
  54. break;
  55. } catch (e) {
  56. console.log(`查询钱包 ${walletAddress} ${walletNum} 余额时发生错误: ${e.message}`);
  57. retryCount += 1;
  58. console.log(`正在重试...(第 ${retryCount} 次)`);
  59. await new Promise((resolve) => setTimeout(resolve, delay));
  60. }
  61. }
  62. if (retryCount === maxRetries) {
  63. resultMessage = `钱包 ${walletAddress} 查询余额失败,已达到最大重试次数。`;
  64. console.log(resultMessage);
  65. }
  66. }
  67. }
  68. queryBalances();