我已经开始使用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)?
契约交互由ABI文件描述。在这种情况下,您需要IERC20或ERC-20接口的ABI文件。
然后,使用这个,您可以创建契约代理实例。合约代理类有decode_function_input。
当然,你需要知道哪些合约是ERC-20令牌,如果没有外部注册表,这是不容易知道的。你最好的办法是尝试猜测一个智能合约是否符合ERC-20标准。