* pop flat trace context when handling halts * Better detection of precompiled and non-executed contracts * correct from address when calling in init code * fix some exotic nesting cases * correct from field for init code calls at depth >1 * correct cost on a non-call * changelog and notes Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
1.3 KiB
Trace RPC API Notes
This document outlines major differences for trace_replayBlockTransactions
compared to other implementations.
stateDiff
No major differences were observed in the stateDiff field.
trace
Besu reports gasUsed after applying the effects of gas refunds. Future
implementations of Besu might track gas refunds separately.
vmTrace
Returned Memory from Calls
In the vmTrace ope.ex.mem fields Besu only reports actual data returned
from a RETURN opcode. Other implementations return the contents of the
reserved output space for the call operations. Note two major differences:
- Besu reports
nullwhen a call operation ends because of aSTOP,HALT,REVERT, running out of instructions, or any exceptional halts. - When a
RETURNoperation returns data of a different length than the space reserved by the call only the data passed to theRETURNoperation is reported. Other implementations will include pre-existing memory data or trim the returned data.
Precompiled Contracts Calls
Besu reports only the actual cost of the precompiled contract call in the
cost field.
Out of Gas
Besu reports the operation that causes out fo gas exceptions, including
calculated gas cost. The operation is not executed so no ex values are
reported.