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

如何修复AttributeError: 'Web3'对象无'toChecksumAddress'属性?

解决1inch_wrapper调用get_rate_to_ETH时的AttributeError问题

错误原因

你使用的Web3.py版本为v5及以上,该版本将旧版的toChecksumAddress(驼峰命名)方法改为to_checksum_address(蛇形命名),但1inch_wrapper库的代码仍在使用旧版方法名,导致触发属性不存在的错误。

解决方案

方案1:降级Web3.py到兼容版本

执行以下命令安装适配旧版方法名的Web3版本:

pip install web3==4.9.2

该版本的Web3仍保留toChecksumAddress方法,可直接与当前1inch_wrapper代码兼容。

方案2:修改1inch_wrapper库的代码

找到虚拟环境中oneinch_py的main.py文件(路径示例:D:\projects\1inchArb\venv\lib\site-packages\oneinch_py\main.py),定位到第376行,将:

rate = self.oracle_contract.functions.getRateToEth(self.w3.toChecksumAddress(src_token), wrap).call()

修改为:

rate = self.oracle_contract.functions.getRateToEth(self.w3.to_checksum_address(src_token), wrap).call()

保存修改后重新运行代码即可。

方案3:提前转换地址为校验和格式(不推荐)

在调用方法前手动将地址转换为校验和格式:

from web3 import Web3
from oneinch_py import OneInchOracle

public_key = "my_wallet_addr"
rpc_url = "https://cloudflare-eth.com"

oracle = OneInchOracle(rpc_url, chain='ethereum')
# 手动转换地址
src_token = Web3.to_checksum_address("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48")
price_usdc = oracle.get_rate_to_ETH(src_token, src_token_decimal=6)

注意:若库内代码仍会再次调用旧方法处理地址,此方案可能无效,优先推荐前两种方案。

内容的提问来源于stack exchange,提问作者Vladislav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:38