go-ethereum/core/asm
Martin HS 56c4f2bfd4
core/vm, cmd/evm: implement eof validation (#30418)
The bulk of this PR is authored by @lightclient , in the original
EOF-work. More recently, the code has been picked up and reworked for the new EOF
specification, by @MariusVanDerWijden , in https://github.com/ethereum/go-ethereum/pull/29518, and also @shemnon has contributed with fixes.

This PR is an attempt to start eating the elephant one small bite at a
time, by selecting only the eof-validation as a standalone piece which
can be merged without interfering too much in the core stuff.

In this PR: 

- [x] Validation of eof containers, lifted from #29518, along with
test-vectors from consensus-tests and fuzzing, to ensure that the move
did not lose any functionality.
- [x] Definition of eof opcodes, which is a prerequisite for validation
- [x] Addition of `undefined` to a jumptable entry item. I'm not
super-happy with this, but for the moment it seems the least invasive
way to do it. A better way might be to go back and allowing nil-items or
nil execute-functions to denote "undefined".
- [x] benchmarks of eof validation speed 


---------

Co-authored-by: lightclient <lightclient@protonmail.com>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Danno Ferrin <danno.ferrin@shemnon.com>
2024-10-02 15:05:50 +02:00
..
asm_test.go core/vm, cmd/evm: implement eof validation (#30418) 2024-10-02 15:05:50 +02:00
asm.go core/vm, cmd/evm: implement eof validation (#30418) 2024-10-02 15:05:50 +02:00
compiler_test.go cmd/evm: fix some issues with the evm run command (#28109) 2023-09-19 13:41:16 +02:00
compiler.go core: fix typos (#28218) 2023-09-29 10:52:22 +03:00
lex_test.go core: fix typos (#28218) 2023-09-29 10:52:22 +03:00
lexer.go all: fix mismatched names in comments (#29348) 2024-03-26 21:01:28 +01:00
tokentype_string.go cmd/evm: fix some issues with the evm run command (#28109) 2023-09-19 13:41:16 +02:00