You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python生成20个以太坊地址列表以调用Etherscan批量API?

搞定Etherscan批量重复地址查询的小技巧

嘿,我来帮你解决这个问题!你已经有了单个地址查询余额的基础代码,现在要把生成的accAddress重复20次组成列表,再用Etherscan的批量接口查询,其实只需要几个简单的步骤就能实现,下面是修改后的完整代码和细节说明:

完整修改代码

import os
from ethereum import utils
import urllib.request
import json
import secrets

# 生成单个私钥及对应校验地址
hex_number = secrets.token_hex(32)
rawAddress = utils.privtoaddr(hex_number)
accAddress = utils.checksum_encode(rawAddress)

# 快速生成包含20个重复地址的列表
address_list = [accAddress] * 20
# 把列表转成Etherscan要求的逗号分隔字符串
addresses_batch = ",".join(address_list)

# 注意!批量查询的API action是balancemulti,不是单个查询的balance
url = f"https://api.etherscan.io/api?module=account&action=balancemulti&address={addresses_batch}&tag=latest&apikey=YOURAPIKEY"

response = urllib.request.urlopen(url)
data = json.loads(response.read())

# 输出结果
print(f"生成的私钥: {hex_number}")
print(f"目标地址: {accAddress}")
print("批量查询余额结果:")
for entry in data['result']:
    print(f"{entry['account']}: {entry['balance']}")

关键细节拆解

  • 列表重复实现:Python里用[accAddress] * 20就能快速创建一个包含20个相同元素的列表,这是最简洁的方式,比循环append更高效
  • Etherscan批量接口差异:单个查询用的是action=balance,但批量查询必须用action=balancemulti,这个是容易踩坑的点,一定要注意
  • 结果解析:批量查询返回的data['result']是一个字典数组,每个字典里包含account(地址)和balance(余额)两个字段,遍历就能输出所有结果

另外,如果其实你是想生成20个不同的地址而不是重复同一个,只需要把生成地址的逻辑放到循环里就行,代码片段如下:

# 生成20个不同的地址列表
address_list = []
for _ in range(20):
    private_key = secrets.token_hex(32)
    raw_addr = utils.privtoaddr(private_key)
    checksum_addr = utils.checksum_encode(raw_addr)
    address_list.append(checksum_addr)
# 后续的拼接和查询逻辑和上面一致

内容的提问来源于stack exchange,提问作者will.ditch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:52:44