mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-13 13:55:45 +00:00
3047c839dc
This combines two things, a C stack usage change with EVM nested calls via EVMC, and changes to host call tracing. Feature-wise, the tracing is improved: - Storage keys and values are make more sense. - The message/result/context objects are shown with all relevant fields. - `call` trace is split into entry/exit, so these can be shown around the called contract's operations, instead of only showing the `call` parameters after the nested call is finished. - Nested calls are indented, which helps to highlight the flow. - C stack usage considerably reduced in nested calls when more functionality is enabled (either tracing here, or other things to come). This will seem like a minor patch, but C stack usage was the real motivation, after plenty of time in the debugger. Nobody cares about stack when `showTxCalls` (you can just use a big stack when debugging). But these subtle changes around the `call` path were found to be necessary for passing all tests when the EVMC nested call code is completed, and that's a prerequisite for many things: async EVM, dynamic EVM, Beam Sync, and to fix https://github.com/status-im/nimbus-eth1/issues/345. Signed-off-by: Jamie Lokier <jamie@shareable.org>