如何持续跟踪钱包指定Token余额并解决Web3脚本while循环不生效问题
问题核心原因
1. 单位换算逻辑错误
你在循环判断条件里误用了fromWei和toWei方法,这是循环直接跳过的核心诱因:
- 合约
balanceOf返回的是Token最小单位(对应BSC链18位精度的wei),为整数类型 web3.fromWei(0.5, 'ether')本身属于非法调用:fromWei的作用是把最小单位数值转为大单位数值,第一个参数必须是最小单位的整数值,传入0.5会触发数值/类型异常- 要判断余额大于0.5个Token,应该把0.5个Token转为最小单位数值,正确写法是
web3.toWei(0.5, 'ether')
因为单位不匹配,条件判断逻辑完全失效,循环刚运行就触发break跳出,直接执行后续转账逻辑。
2. 其他隐性问题
- 循环无延时:死循环高频调用BSC公共RPC节点,很快会被节点限制访问,也会占用不必要的资源
- 变量未定义:转账时
transfer方法传入的my_address没有定义,你前面定义的接收地址变量是second_address - 类型拼接错误:最后打印日志时直接将整数类型的余额和字符串拼接,会触发类型报错
- 无异常捕获逻辑:RPC节点波动时脚本会直接崩溃
修复后代码
from web3 import Web3 import json import time # 新增导入时间模块用于控制查询间隔 bsc = "https://bsc-dataseed.binance.org/" web3 = Web3(Web3.HTTPProvider(bsc)) print(web3.isConnected()) main_address = "wallet to be tracked" # 替换为实际被监控钱包地址 contract_address = "token contract address" # 替换为实际Token合约地址 abi = json.loads('the abi') # 替换为实际合约ABI second_address = "the other wallet address" # 替换为实际接收地址 main_key = "private key of first wallet" # 替换为被监控钱包私钥 contract = web3.eth.contract(address=contract_address, abi = abi) # 阈值提前转为最小单位,避免循环内重复计算 threshold = web3.toWei(0.5, 'ether') while True: try: balanceOfToken = contract.functions.balanceOf(main_address).call() print(f"当前余额:{web3.fromWei(balanceOfToken, 'ether')}") if balanceOfToken > threshold: print("余额达到阈值,启动转账") break # 每次查询后等待10秒,可自行调整间隔 time.sleep(10) except Exception as e: print(f"查询余额出错:{str(e)},5秒后重试") time.sleep(5) nonce = web3.eth.getTransactionCount(main_address) # 修正接收地址变量为second_address token_tx = contract.functions.transfer(second_address, balanceOfToken).buildTransaction({ 'chainId':56, 'gas': 90000, 'gasPrice': web3.toWei('5', 'gwei'), 'nonce':nonce }) signed_tx = web3.eth.account.signTransaction(token_tx, main_key) tx_hash = web3.eth.sendRawTransaction(signed_tx.rawTransaction) print(f"转账已发送,交易哈希:{tx_hash.hex()}") # 修正类型拼接错误 balance = web3.fromWei(contract.functions.balanceOf(second_address).call(), 'ether') token_name = contract.functions.name().call() print(f"接收地址当前{token_name}余额:{balance}")
内容的提问来源于stack exchange,提问作者Saujanya Verma
相关产品推荐
相关产品推荐

