Etherscan API 数据不一致
Posted
技术标签:
【中文标题】Etherscan API 数据不一致【英文标题】:Etherscan API inconsistent data 【发布时间】:2021-12-13 01:08:06 【问题描述】:我遇到了从 Etherscan API 返回的数据的问题。我正在使用两个端点:
(1) 按地址划分的正常交易
https://api.etherscan.io/api?module=account&action=txlist
(2) Erc721 Transaction by Address
https://api.etherscan.io/api?module=account&action=tokennfttx
地址:
0x0b8f4c4e7626a91460dac057eb43e0de59d5b44f
Txhash:0x6b2103201b968e5ad9a26041127080c4969b10191c8ad94082980487d6fbd9aa
--> 铸造事件
我在调用 (2) 时可以看到这个交易,但是这个端点没有传递转移的价值。我曾经通过调用 (1) 并遍历列表并匹配 tx 哈希来获取值,但它没有列出。在 Etherscan 上,您可以看到转移值为 0.05 Eth (https://etherscan.io/tx/0x6b2103201b968e5ad9a26041127080c4969b10191c8ad94082980487d6fbd9aa) 的铸币事件。但是这些信息是从哪里来的呢?如何找到转移的价值?
现在是另一个有效的例子:
地址:0xB2Ebc9b3a788aFB1E942eD65B59E9E49A1eE500D
Txhash:0x57ece5c8b9f040f43faac83a68883a5324f2ef6d36ad0018dc6813a0c851ff74
调用(2)时可以看到交易,调用(1)时也可以看到匹配的tx hash
非常感谢任何支持和提示!
【问题讨论】:
【参考方案1】:txlist
端点 (docs) 返回发送from
和to
指定地址的本机事务 列表。但它不考虑代币转移。
由于0x6b... 交易,发出了几个Transfer()
事件日志(表示代币转移、铸造或销毁的标准化方式),其中一个包含0x0b... 地址作为其参数之一(特别是作为令牌接收者)。
但是,本机事务没有发送到from
或to
0x0b...
地址。这就是它没有在端点中返回的原因。
在您的第二个示例中,0x57... 本机事务实际上是从0xB2... 地址发送的。这就是它包含在 txlist
端点响应中的原因。
它还包含Transfer()
事件日志,向同一个0xB2... 地址发出令牌铸币信号,但这是不重要的因素。如果令牌被转移到任何其他地址或根本没有转移,它不会有任何区别(与txlist
端点相关)。
【讨论】:
嗨!感谢您的回答。仍然难以理解。无论如何我都会奖励你,因为你做出了努力,而且听起来是正确的。 :) 对于本地交易,您的意思是 ETH 从一个帐户转移到另一个帐户?在这两种情况下,都会发送特定数量的 ETH。还有,我在哪里可以通过查看上面链接的事务详细信息页面上的 etherscan 来区分某些内容是在本机事务级别发送的,而不是什么?在我看来两者都一样 本地交易是指黄皮书中定义的以太坊(网络,而非货币)交易(在引入智能合约和代币之前)。它可以有 ETHvalue
(如您的情况),但该值也可以为零。它还可以包含data
字段,表明如果接收者是智能合约,则执行什么功能,并且它可能导致发出事件日志(通过智能合约)信号令牌传输。本机交易对象在签名之前的示例(通过发送方私钥):eth.wiki/json-rpc/API#eth_sendtransaction
在本机 tx 级别发送的内容 - 请参阅上一个链接。例如,任何 ETH value
...另一方面,任何Transfer()
事件日志都是由于接收合约正在处理的事务而产生的...。示例transaction 来自您的问题:From
、Interacted With (To)
和 Value
是事务的字段。 Transaction Action
和 Tokens Transferred
是根据 data
字段和事件日志计算的结果(在 tx 被合约处理之后)。
啊,好吧,这更有意义。我想避免解码输入数据,但这可能是最有意义的。因此,在我的问题中描述的第一个案例中,我只能从编码的输入数据中获取交易的价值,否则我将如何获得它?在端点 (2) 中,我只能看到发生了什么,但对这个铸币事件没有任何价值。以上是关于Etherscan API 数据不一致的主要内容,如果未能解决你的问题,请参考以下文章
通过 Dataflow Java API 返回客户端的不一致 BigQuery 数据类型
dubbo的服务consumer与provider使用的api版本不一致,是否有影响