首页 > 解决方案 > 待处理的以太坊交易的日志在确认后消失了

问题描述

当我使用“eth_getLogs”查询待处理事务的日志时,日志信息显示如下,但是在确认 tx 后,日志在 etherescan 上不可用。此 tx 使用了委托调用。任何人都可以就日志消失的原因提出建议吗?

当 tx 处于挂起状态时,通过查询 ""eth_getLogs"" 来记录信息:

  topics: [
    '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
    '0x0000000000000000000000006463bd6026a2e7bfab5851b62969a92f7cca0eb6',
    '0x000000000000000000000000860bd2dba9cd475a61e6d1b45e16c365f6d78f66'
  ],
  data: '0x00000000000000000000000000000000000000000000058677bb9e53cb507ddd',
  blockNumber: '0xb117d6',
  transactionHash: '0x9b51d7093c4507fa96af3fd4418c508700cb9f69f3cea9d7f5a192afa30cd1bf',
  transactionIndex: '0x41',
  blockHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
  logIndex: '0x4f',
  removed: false
}

确认后在etherscan上进行交易:https ://etherscan.io/tx/0x9b51d7093c4507fa96af3fd4418c508700cb9f69f3cea9d7f5a192afa30cd1bf

标签: ethereumsoliditygo-ethereum

解决方案


由于交易执行的结果,包括生成的事件,取决于执行时合约和账户的状态,那么,显然,显示的日志对应于如果交易包含在块 0xb117d6 中的状态,但是在块 0xb117d8 的上下文中实际执行时,状态块/帐户已经不同,从而导致了不同的结果。

此外,未决交易执行的预测是基于您的特定节点的数据,在存在分叉的情况下,这些数据可能与主链的数据不同。


推荐阅读