nimbus-eth1/nimbus/transaction
Jamie Lokier 6d4205b0b0
Transaction: Just enough support to work with nested calls
Proper nested call functionality is being skipped in this iteration of new EVMC
host code to keep it simpler, to allow testing and architecture to be built
around the less complicated non-nested cases first.

Instead, nested calls use the old `Computation` path, and bypass any
third-party EVM that may be loaded.  The results are the same, and mixing
different EVMs in this way is actually permitted in the EVMC specification.

This approach also means third-party EVMs we test don't need to support
precompiles and we don't need to specially handle those cases.
(E.g. "evmone" doesn't support precompiles, just EVM1 opcodes).

(These before/after scope actions are approximately copy-pasted from
`nimbus/vm/evmc_host.nim`, making their detailed behaviour "obviously correct".
Of course they are subject to tests as well.  The small stack property of
a3c8a5c3 "EVMC: Small stacks when using EVMC, closes #575 (segfaults)" is
carefully retained.)

Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-06-08 18:29:41 +01:00
..
call_common.nim Transaction: Run all computations via EVMC `execute` 2021-06-08 18:29:39 +01:00
call_evm.nim EVM: Remove `vm_types2` everywhere, use common forks list instead 2021-06-08 15:36:31 +01:00
evmc_host_glue.nim EVMC: Using `{.show.}` trace all calls from the host into the EVM 2021-06-08 18:29:40 +01:00
evmc_vm_glue.nim EVMC: Binary compatibility on the VM side for calling `execute` 2021-06-08 18:29:39 +01:00
host_call_nested.nim Transaction: Just enough support to work with nested calls 2021-06-08 18:29:41 +01:00
host_services.nim Transaction: Just enough support to work with nested calls 2021-06-08 18:29:41 +01:00
host_trace.nim EVMC: Using `{.show.}` trace all calls from the host into the EVM 2021-06-08 18:29:40 +01:00
host_types.nim Transaction: Run all computations via EVMC `execute` 2021-06-08 18:29:39 +01:00