Trace API 概述
Trace模块可以帮助更深入的了解交易的处理过程。它包含了两组调用: 交易跟踪过滤API和自组织跟踪API。
注意,要使用跟踪API,你的Pairty必须开启tracing
标志而且完全同步,
即parity --tracing
启动节点。
自组织跟踪API
自组织跟踪API允许你对RPC调用或交易进行各种不同的诊断,例如链上的 历史交易或还未确认的假想交易等等。支持的诊断包括:
- trace:交易跟踪
- vmTrace:虚拟机执行跟踪。提供交易执行整个过程的VM状态的完整跟踪,包含所有的子调用
- stateDiff:状态差异。提供交易执行引起的不同时刻的以太坊状态差异的详细信息。
有三种方式可以提供用于诊断的交易执行:
- 提供和eth_call调用相同的信息,即trace_call
- 提供和eth_sendRawTransaction调用一样的原始的签名交易数据,即trace_rawTransaction
- 提供之前确认交易的哈希,即trace_replayTransaction,这种情况下,要求你的节点必须 使用归档模式,或者交易应当在最近的1000个区块内
交易跟踪过滤API
这些API允许你获取任何在Pairty链上执行的交易的完整的外部跟踪。与日志过滤API 不同,你可以只使用地址信息进行搜索和过滤。返回的信息包括所有CREATE、SUICIDE和 CALL的变体的执行,以及输入输入、输出数据、gas使用、转账数量和每个单独动作的 成功状态。
traceAddress字段
所有返回的跟踪的traceAddress
字段,给出了在调用跟踪中的确切位置:
[根索引, 第一个CALL索引, 第二个CALL索引, …]。
例如,如果得到的跟踪是:
A
CALLs B
CALLs G
CALLs C
CALLs G
那么traceAddress看起来应该像这样:
[ {A: []}, {B: [0]}, {G: [0, 0]}, {C: [1]}, {G: [1, 0]} ]