繁体   English   中英

func_obj, func_params 在解码以太坊交易时没有响应

[英]func_obj, func_params not responding when decoding an ethereum transaction

我正在尝试使用https://medium.com/coinmonks/discovering-the-secrets-of-an-ethereum-transaction-64febb00935c中的步骤解码交易,但是每当我尝试运行最后一行时,我都会得到以下信息错误:

ValueError:找不到任何具有匹配选择器的函数

from web3 import Web3
import json
import requests
web3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/46cb623357d54c54b86ae7aa0afa1245'))
# Get transaction object
tx = web3.eth.get_transaction(0xd37e09810d624a3149913e6a769be1cf200d0c511b36008044a0922108fa488a)
# Get ABI for smart contract NOTE: Use "to" address as smart contract 'interacted with'
abi_endpoint = f"https://api.etherscan.io/api?module=contract&action=getabi&address={tx['to']}&apikey={'MDVQWNWT1ZXW2MV5TWKYU9P57WFY3F3P6J'}"
abi = json.loads(requests.get(abi_endpoint).text)
# Create Web3 contract object
contract = web3.eth.contract(address=tx["to"], abi=abi["result"])
# Decode input data using Contract object's decode_function_input() method
func_obj, func_params = contract.decode_function_input(tx["input"])
print(func_params)

如何解决这个问题?

我已经测试了您的代码,并且在大多数情况下看起来都很好。

属于您正在与之交互的合同的 abi 似乎存在问题,因为代码可以成功运行,例如这些哈希(从 ethscan 中随机选择):

0xb670ab16162f8e4b00cbd57175b0dfb0025690b79a31876d802af84bcc793246 0x4bb2e49bf8965b6acdf5c1b7c18e8811a0e4704a6c3775d743cd8304054adea9

我自己做了一些谷歌搜索,发现了这个指出同样问题的线程:

https://ethereum.stackexchange.com/questions/70340/how-exactly-do-you-decode-input-data-using-web3-py-using-the-decode-function-inp

抱歉,我无法为您提供问题的确切解决方案,但我希望它能为您指明正确的方向!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM