【问题标题】:How to get transactions invoked by smart contract from blockchain如何从区块链获取智能合约调用的交易
【发布时间】:2017-10-15 07:13:50
【问题描述】:

我想从区块链中获取某个地址(地址 A)的所有收据记录。我使用 web3.eth.getBlock 和 web3.eth.getTransaction 来获取与 A 相关的所有交易。 但是我发现如果通过在合约中调用'A.send'或'A.transfer'函数将以太币转移到地址A,我只能获得从调用者地址到合约地址的合约调用交易。而且我找不到这笔交易与地址 A 之间的关系。 有没有办法让 A 的合约调用交易? 谢谢。

【问题讨论】:

    标签: ethereum smartcontracts


    【解决方案1】:

    简答:监听事件而不是监控事务。

    为什么我找不到合约“调用”的交易?

    合约不会调用/创建自己的交易(它没有用于签署交易的私钥)。如您所见,合约可以在其自身执行期间调用其他合约,但这些调用都作为同一事务的一部分执行。

    发现执行的函数调用的推荐方法是使用事件。如果你想观察的合约没有指定你想观察的调用事件,你可能需要做一些繁重的工作:在 EVM 级别跟踪每笔交易的执行(大区块浏览器为了生成一些额外的他们提供的信息)。

    如果您无法追踪:您可以在此Ethereum StackExchange Question about internal transactions 上找到有关使用ethereumjs-vm 或geth 的debug_traceTransaction 的更多信息。

    【讨论】:

    • 我无法控制发送方使用指定的合约。您能否提供一些有关在 EVM 级别跟踪事务执行的链接。非常感谢。
    • 当然可以,我添加了一个链接,以供更多关于跟踪主题的讨论。
    • 谢谢。最后,我使用奇偶校验跟踪 API 来获取这些内部事务
    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 2019-04-24
    • 2021-04-03
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多