Commit graph

17 commits

Author SHA1 Message Date
Marius van der Wijden
fa2f3f2819 Merge remote-tracking branch 'origin/master' into eof-opcodes 2025-02-20 21:08:16 +01:00
Marius van der Wijden
1bb727ba75 core/vm: copy container 2025-02-13 16:37:36 +01:00
Marius van der Wijden
545fcb144a core/vm: fix overflows in DATACOPY and DATALOAD opcodes 2025-02-13 11:05:09 +01:00
Marius van der Wijden
8a84cd1b97 core/vm: fix off-by-one error 2025-02-07 14:15:20 +01:00
Marius van der Wijden
644823db48 core/vm: clean up code and containerOffset handling 2025-02-07 14:07:03 +01:00
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