Commit graph

12 commits

Author SHA1 Message Date
Danno Ferrin
5bfacf4ba2 Move EOF interpreter to use same PC semantics as legacy EVM
Update the EOF container parsing to allow the PC to use the same semantics as the legacy EVM.
 Also, a new test container maker is necessary to handle the particulars of the unit tests, mostly unrelated to
2025-02-07 12:31:55 +01:00
Marius van der Wijden
6fe254e378 all: fix merging issues 2025-02-04 10:20:10 +01:00
Marius van der Wijden
d206fba16d core/vm: added EXTCALL,EXTDELEGATECALL,EXTSTATICCALL opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden
c7db447b1f core/vm: added RETURNDATALOAD opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden
bb1885c78e core/vm: added DATALOAD,DATALOADN,DATASIZE,DATACOPY opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden
5992baf543 core/vm: added RETURNCONTRACT opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden
9fa14a1af4 core/vm: added EOFCREATE opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden
a58ba40cf6 core/vm: added JUMPF opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden
026306218b core/vm: added CALLF,RETF opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden
866ad956a4 core/vm: added RJUMP,RJUMPI,RJUMPV opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden
5bd220b2f0 core/vm: added opSwapN,Exchange,DupN opcodes 2024-10-11 12:42:13 +02:00
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