如何通过 Python 和 Web3.py 获取 ETH 智能合约的数量?
Posted
技术标签:
【中文标题】如何通过 Python 和 Web3.py 获取 ETH 智能合约的数量?【英文标题】:How to get the amount of ETH smart contract with Python and Web3.py? 【发布时间】:2021-11-30 10:24:01 【问题描述】:我已经开始使用 Web3.py 进行 ETH 交易分析。 我已经爬了 10000 多个区块,我的大部分交易都是这样的:
'blockHash': HexBytes('0x439f47a300d021223aeee060c0daabc03bedb250600890faeea7b27c0d30e0e4'), 'blockNumber': 13395924, 'from': '0x18EEfb2E363B54d9F76d347c4aAACF79553c7dBf', 'gas': 106052, 'gasPrice': 89000000000, 'hash': HexBytes('0x173f992db0b9c96f57799afdec51c7a418b7fa36c5ba8b16acb5d45619f03f3f'), 'input': '0xa9059cbb000000000000000000000000a1d8d972560c2f8144af871db508f0b0b10a3fbf00000000000000000000000000000000000000000000010f0cf064dd59200000', 'nonce': 14, 'r': HexBytes('0x9aba92daac3b8b2858552d0e88a3a3cbf904759942830d1d615a8d98af972fd1'), 's': HexBytes('0x7f5228eba9607f0d2a6cb1c6dc97bc37056a7274fa5ee9283d5962de41a86955'), 'to': '0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F', 'transactionIndex': 145, 'type': '0x0', 'v': 38, 'value': 0
据我所知,如果'value'
为 0 并且'input'
看起来像这样'0xa9059cbb000000000000000000000000a1d8d972560c2f8144af871db508f0b0b10a3fbf00000000000000000000000000000000000000000000010f0cf064dd59200000'
,则意味着它的智能合约。
我的任务是,如何获得交易量(ERC-20)?
【问题讨论】:
【参考方案1】:合约交互由ABI files 描述。在这种情况下,您需要an ABI file for IERC20, or ERC-20 interface。
然后,有了这个,你可以create Contract proxy instances。一个合约代理类有decode_function_input。
当然,您需要知道哪些合约是 ERC-20 代币,而如果没有外部注册表,您将无法轻易知道这一点。您最好的选择是尝试根据一些启发式猜测智能合约是否为 ERC-20。
【讨论】:
以上是关于如何通过 Python 和 Web3.py 获取 ETH 智能合约的数量?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取以太坊合约和账户信息(使用geth和web3.py)
使用 web3.py 通过块哈希获取 Avalanche 块数据