首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用web3.py库调用error中的balanceOf函数但得到错误

尝试使用web3.py库调用error中的balanceOf函数但得到错误
EN

Stack Overflow用户
提问于 2019-08-03 06:28:37
回答 1查看 10.3K关注 0票数 7
代码语言:javascript
复制
import json
from web3 import Web3
infura_url = "https://mainnet.infura.io/v3/5b314a9b373442fc8ed0c9cd184e838f"
web3 = Web3(Web3.HTTPProvider(infura_url))
abi=json.loads('[{"constant":true,"inputs":..........] large array')
address = "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07"
contract = web3.eth.contract(address=address, abi=abi)
totalSupply = contract.functions.totalSupply().call()
print(totalSupply)
print(contract.functions.name().call())
print(contract.functions.symbol().call())
balance = contract.functions.balanceOf('0x2551d2357c8da54b7d330917e0e769d33f1f5b93').call()
print(web3.fromWei(balance, 'ether'))

但是当我运行这段代码时,我会得到这个错误。

'0x2551d2357c8da54b7d330917e0e769d33f1f5b93')-->:('Web3.py只接受校验和地址。提供这个非校验和地址的软件应该被认为是不安全的,请将其作为错误提交到他们的平台上。尝试使用ENS名称。或者,如果您必须接受较低的安全性,请使用Web3.toChecksumAddress(Lower_case_address)。‘),这一行的web3.exceptions.InvalidAddress错误。

EN

回答 1

Stack Overflow用户

发布于 2019-08-03 07:27:31

可能的解决办法:

您没有显示您的Web3版本,此时fromWei函数已经过时,并已从文档中删除。

contract.functions.balanceOf('0x2551d2357c8da54b7d330917e0e769d33f1f5b93').call()

上面的函数出现错误,因为您插入的地址不是校验和地址。如果你不明白什么是校验和地址,这里你有一个很好的解释,在这种情况下该怎么办?显然,您需要将插入到contract.functions.balanceOf上的地址转换为校验和地址

代码语言:javascript
复制
address2 = Web3.toChecksumAddress('0x2551d2357c8da54b7d330917e0e769d33f1f5b93')
balance=contract.functions.balanceOf(address2).call()

#Don't use fromWei function if its not defined on your Web3 documentation
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57335994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档