如何用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
相关产品推荐
相关产品推荐

