nimbus-eth1/nimbus
Jamie Lokier 3047c839dc
EVMC: Improve host call tracing and fix nested call C stack usage
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>
2021-08-12 07:48:56 +07:00
..
db Add a first, simple, content network test (#760) 2021-07-15 15:12:33 +02:00
graphql preparation for EIP-1559 implementation 2021-06-29 07:33:48 +07:00
p2p clique: connect period and epoch from chain_config to engine 2021-08-11 17:42:41 +07:00
rpc RPC: Calculate `eth_protocolVersion` from live protocol 2021-07-27 14:12:51 +01:00
sync Sync: Add messages about `eth/65` handshake parameters 2021-07-27 14:12:59 +01:00
transaction EVMC: Improve host call tracing and fix nested call C stack usage 2021-08-12 07:48:56 +07:00
utils #768 Moved/re-implemented ecRecover() from Clique sources to utils/ec_recover 2021-08-05 12:27:10 +07:00
vm EVM: Use the EVMC calls for EIP-2929 access-list and refactor in EVM 2021-08-11 19:47:38 +07:00
vm2 vm2: Use `ContractSalt` type for `CREATE2` salt 2021-08-05 11:07:10 +01:00
block_types.nim reduce compiler warnings 2019-11-13 21:49:39 +07:00
chain_config.nim config: fix config file parser 2021-08-06 07:30:53 +07:00
conf_utils.nim Jordan/fix some failing nohive tests (#727) 2021-06-24 16:29:21 +01:00
config.nim add websocket rpc server 2021-08-06 07:32:19 +07:00
constants.nim Rename `ZERO_HASH32` to `ZERO_HASH256` to match `Hash256` type 2021-08-05 10:21:11 +01:00
errors.nim remove unused eraseReturnData 2020-01-20 18:36:58 +02:00
forks.nim preparation for London hard fork 2021-06-29 07:34:45 +07:00
genesis.nim EIP-1559: Fee market change for ETH 1.0 chain 2021-06-30 20:30:39 +07:00
genesis_alloc.nim add goerli testnet genesis data[skip ci] 2020-04-09 19:13:17 +03:00
launcher.nim Premix-related changes 2019-01-28 12:38:23 +02:00
lightchain_shell.nim Some renames 2018-05-28 13:22:28 +03:00
makefile Basic tests for Clique PoA/Consensus engine 2021-06-17 08:03:57 +01:00
nim.cfg NAT port mapping 2019-04-17 03:56:28 +02:00
nimbus.nim add websocket rpc server 2021-08-06 07:32:19 +07:00
random_keys.nim move rng to configuration 2020-07-21 00:16:59 +07:00
tracer.nim Fearture/poa clique tuning (#765) 2021-07-30 15:06:51 +01:00
transaction.nim EIP-3529: Reduce the max gas refunded after a transaction 2021-06-29 07:37:17 +07:00
utils.nim Transaction: EVMC fix, `CREATE2` salt is a 256-bit blob not a number 2021-08-05 10:35:52 +01:00
validation.nim reduce compiler warnings 2019-11-13 21:49:39 +07:00
vm_compile_info.nim print compiler warning about the VM used 2021-04-28 15:24:14 +03:00
vm_computation.nim EVM: Apply EIP-6 in the code (affects both vm and vm2) 2021-06-08 15:36:30 +01:00
vm_gas_costs.nim EIP-3529: Replace SSTORE_CLEARS_SCHEDULE 2021-06-29 07:37:17 +07:00
vm_internals.nim vm2: Remove vm2 `forks_list` everywhere, use common forks list 2021-06-08 15:36:31 +01:00
vm_precompiles.nim re-named some v2*.nim sources to its original name *.nim (without the v2) 2021-04-28 15:24:14 +03:00
vm_state.nim EIP-1559: Fee market change for ETH 1.0 chain 2021-06-30 20:30:39 +07:00
vm_state_transactions.nim Transaction: Prepare txRefundGas to support txCallEvm 2021-05-03 19:51:20 +01:00
vm_types.nim re-named some v2*.nim sources to its original name *.nim (without the v2) 2021-04-28 15:24:14 +03:00