通常,我们需要ABI来解码事务中的数据。现在,我想问一问,我们是否能够获得指定密码货币的所有契约。例如,我有一批txs等待解码,它们都调用MakerDao契约。如何通过数据库中的一次抓取获得所有的MakerDao ABI?
或者这就是我过去得到ABI合同的方式
connector = f"https://api.etherscan.io/api?module=contract&action=getabi&address={Address}&apikey={self.Etherscan_key}"
self.Abi = basic_json.loads(requests.get(connector).text) 如何知道哪个平台(如MakerDao、Aave或化合物等)这份合同属于什么?
发布于 2022-04-04 15:32:13
不幸的是,这是不可能的。要做到这一点,既需要能够检测契约是否实现ABI (不可能),也需要枚举所有智能契约(甚至更不可能)。
由于ABI实际上是抽象的,因此无法检测智能契约是否实现ABI。Ethereum本身不知道什么是函数。
枚举所有智能契约的可能性更小,因为每个地址实际上都是智能契约(是的,包括您自己的钱包)。然而,即使是检测非空地址也是非常困难的,因为它需要通过整个区块链搜索契约部署(这将显示为以太传输到零地址)。
https://stackoverflow.com/questions/71725969
复制相似问题