mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-13 13:55:45 +00:00
6d4205b0b0
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>