balance_query_somnia.mjs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { ethers } from "ethers";
  2. // 设置 RPC URL
  3. const rpcUrl = 'https://dream-rpc.somnia.network';
  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. const balanceEth = ethers.formatUnits(balance, 18);
  47. resultMessage = `Wallet address: ${walletAddress} ${walletNum}, balance: ${balanceEth} Token`;
  48. resultBalance = balanceEth;
  49. console.log(resultMessage);
  50. walletNum += 1;
  51. break;
  52. } catch (e) {
  53. console.log(`查询钱包 ${walletAddress} ${walletNum} 余额时发生错误: ${e.message}`);
  54. retryCount += 1;
  55. console.log(`正在重试...(第 ${retryCount} 次)`);
  56. await new Promise((resolve) => setTimeout(resolve, delay));
  57. }
  58. }
  59. if (retryCount === maxRetries) {
  60. resultMessage = `钱包 ${walletAddress} 查询余额失败,已达到最大重试次数。`;
  61. console.log(resultMessage);
  62. }
  63. }
  64. }
  65. queryBalances();