首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >USDC以太扫描ABI缺失小数函数

USDC以太扫描ABI缺失小数函数
EN

Ethereum用户
提问于 2022-02-20 03:17:18
回答 1查看 1.3K关注 0票数 0

我从以太扫描中取出USDC,然后把它传给web3

代码语言:javascript
复制
erc20_dict = {
    'USDC': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
}
url = f'https://api.etherscan.io/api?module=contract&action=getabi&address={contract_address}&apikey={apikey}'
ret = requests.get(url)
ABI = ret.json()['result']
contract = w3.eth.contract(address=w3.toChecksumAddress(erc20_dict['USDC']), abi=ABI)
print(contract.functions.decimals().call())

但我得到了以下错误:

代码语言:javascript
复制
web3.exceptions.ABIFunctionNotFound: ("The function 'decimals' was not found in this contract's abi. ", 'Are you sure you provided the correct contract abi?')

为什么在以太扫描上的USDC ABI不包含小数函数?我想一般地使用这个函数来为令牌/契约提取ABI,所以使用泛型erc20 ABI并不是最好的解决方案。有什么想法吗?谢谢!

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-02-20 04:03:49

这是因为USDC使用代理合同。代理合同将使用delegatecall实现合同,其中将包含所有的ERC-20功能。因此,在您的代码中,您不需要从以太扫描中获取ABI,您可以使用基本的ERC-20合同的ABI,这应该适用于所有ERC-20令牌合同。这也将帮助您避免对每个契约进行外部API调用。

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/122085

复制
相关文章

相似问题

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