我想从区块链中获取某个地址(地址 A)的所有收据记录。我使用 web3.eth.getBlock 和 web3.eth.getTransaction 来获取与 A 相关的所有交易。但是我发现如果通过调用合约中的“A.send”或“A.transfer”函数将以太币转移到地址 A,我可以只获得从调用者地址到合约地址的合约调用交易。而且我找不到这笔交易和地址 A 之间的关系。有没有办法让 A 的合约调用交易?谢谢。
问问题
3494 次
1 回答
1
简短的回答:监听事件而不是监视事务。
为什么我找不到合约“调用”的交易?
合约不会调用/创建自己的交易(它没有私钥来签署)。如您所见,一个合约可以在它自己的执行过程中调用其他合约,但是这些调用都是作为同一事务的一部分执行的。
发现执行的函数调用的推荐方法是使用事件。如果你想观察的合约没有指定你想观察的调用事件,你可能需要做一些繁重的工作:在 EVM 级别跟踪每笔交易的执行(大区块浏览器为了生成一些额外的他们提供的信息)。
如果您在跟踪中遇到困难:您可以在有关内部交易的 Ethereum StackExchange Question 中找到更多关于使用或gethethereumjs-vm
的信息。debug_traceTransaction
于 2017-10-17T02:25:29.140 回答