nimbus-eth1/nimbus
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
..
db drop PublicNetwork enum usage and replace it with NetworkId 2021-05-20 14:04:16 +07:00
graphql EVM: Remove most unused imports of `vm_*` files 2021-06-01 16:54:38 +01:00
p2p Transaction: Use same log level for all block rejection causes 2021-06-08 18:07:50 +01:00
rpc Whisper: Remove Whisper-specific hexstring/JSON/key storage support 2021-06-01 18:12:48 +01:00
transaction Transaction: Just enough support to work with nested calls 2021-06-08 18:29:41 +01:00
utils Deep copy semantics for LRU cache 2021-05-26 11:12:52 +01:00
vm EVMC: Disable byte-endian conversion of 256-bit values on EVM side 2021-06-08 18:29:39 +01:00
vm2 vm2: Remove vm2 `forks_list` everywhere, use common forks list 2021-06-08 15:36:31 +01:00
block_types.nim reduce compiler warnings 2019-11-13 21:49:39 +07:00
chain_config.nim drop PublicNetwork enum usage and replace it with NetworkId 2021-05-20 14:04:16 +07:00
conf_utils.nim add validateKinship in persistBlocks of nimbus/p2p/chain.nim 2021-05-27 16:28:26 +07:00
config.nim EVM: Remove `vm_types2` everywhere, use common forks list instead 2021-06-08 15:36:31 +01:00
constants.nim Clear up meaning of `ZERO_ADDRESS`, delete `CREATE_CONTRACT_ADDRESS` 2021-05-27 12:14:51 +01:00
errors.nim remove unused eraseReturnData 2020-01-20 18:36:58 +02:00
forks.nim Forks: Use capitalized names again for presentation (logging etc.) 2021-06-08 15:36:31 +01:00
genesis.nim drop PublicNetwork enum usage and replace it with NetworkId 2021-05-20 14:04:16 +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 removed circular import dependencies 2021-04-28 15:24:14 +03:00
nim.cfg NAT port mapping 2019-04-17 03:56:28 +02:00
nimbus.nim Whisper: Remove all the main Whisper code (config, startup, RPC etc) 2021-06-01 18:12:48 +01:00
random_keys.nim move rng to configuration 2020-07-21 00:16:59 +07:00
tracer.nim EVM: Remove most unused imports of `vm_*` files 2021-06-01 16:54:38 +01:00
transaction.nim EVM: Remove `vm_types2` everywhere, use common forks list instead 2021-06-08 15:36:31 +01:00
utils.nim implement more eth rpc and keystore management 2020-07-23 14:54:32 +07: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 re-named v2gas_costs.nim to its original name v2gas_costs.nim 2021-04-28 15:24:14 +03: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 re-named some v2state_transactions.nim to its original name without the v2 2021-04-28 15:24:14 +03: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