balance_query_eth.mjs 2.6 KB

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