Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Eof Execution EIP-7692 (EIP-663, EIP-3540, EIP-3670, EIP-4200, EIP-4750, EIP-5450, EIP-6206, EIP-7069, EIP-7480, EIP-7620, EIP-7698, EIP-7756) #6896

Closed
wants to merge 314 commits into from
Closed
Show file tree
Hide file tree
Changes from 80 commits
Commits
Show all changes
314 commits
Select commit Hold shift + click to select a range
dfbd13d
fix build issues
Demuirgos Jun 19, 2024
be7fc22
fix build issue
Demuirgos Jun 20, 2024
f4da9ec
added version to EOF logs
Demuirgos Jun 21, 2024
cc5961a
* (temporary) added prague pyspec tests suite
Demuirgos Jun 25, 2024
765aed3
fix some failing tests :
Demuirgos Jun 25, 2024
0112f8b
reimplement *CALL opcodes
Demuirgos Jun 26, 2024
5aa20d4
Merged master
Demuirgos Jun 26, 2024
7bb0958
Minor code changes
Demuirgos Jun 30, 2024
6b28af5
added status error codes
Demuirgos Jul 1, 2024
71f7de1
fix some failing tests
Demuirgos Jul 2, 2024
4d336ce
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 2, 2024
522bff7
removing unused code
Demuirgos Jul 2, 2024
529ea09
some refactor
Demuirgos Jul 2, 2024
e5e88e1
Formatting
benaadams Jul 2, 2024
10ce03b
Fix enablement bracketing logic
benaadams Jul 2, 2024
b628386
Clean up, fix if bracketing
benaadams Jul 2, 2024
b26fb9a
Return 1 for non-eof contract don't charge call gas
benaadams Jul 2, 2024
961609a
Only available in EOF
benaadams Jul 3, 2024
1d57470
Return statuscode should continue
benaadams Jul 3, 2024
a815169
Check stack returns
benaadams Jul 3, 2024
486e619
Handle ArrayPool arrays more safely
benaadams Jul 3, 2024
b4f1475
Fix out of bounds vector access
benaadams Jul 3, 2024
b037ba8
Added comments, and fixed bugs
Demuirgos Jul 3, 2024
2765ac0
fix unreachable code check
Demuirgos Jul 3, 2024
68cfba3
Add more validation rules for EOFCREATE and RETURNCONTRACT
Demuirgos Jul 4, 2024
bdbb912
Formatting
benaadams Jul 4, 2024
259711b
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 4, 2024
151398f
- some EofCreate/ReturnContract fixes
Demuirgos Jul 5, 2024
e684eff
some refactors to CodeInfo and EofCodeInfo
Demuirgos Jul 8, 2024
3aba7de
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 8, 2024
103f834
formatting
benaadams Jul 9, 2024
8c81d45
Merge branch 'master' into feature/evm/eof
benaadams Jul 9, 2024
e4b2ca6
Increment Nonce before snapshot
benaadams Jul 9, 2024
c6ff84f
Comment out new tests
benaadams Jul 9, 2024
1864710
Revert "Comment out new tests"
benaadams Jul 9, 2024
051c786
fix exchange failing tests in pyspec
Demuirgos Jul 9, 2024
5ad754a
* fix Create2 in Eof
Demuirgos Jul 10, 2024
d97d653
Fomratting
benaadams Jul 10, 2024
4737cdd
Fix All_tx_should_pass_before_3541
benaadams Jul 10, 2024
e676f62
Output differences
benaadams Jul 10, 2024
37fc94f
extcodehash is Keccak not Sha256
benaadams Jul 10, 2024
d690c27
Fix extcodecopy_out_of_bounds
benaadams Jul 10, 2024
4c3f815
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 10, 2024
e73a606
Merge branch 'master' into feature/evm/eof
benaadams Jul 10, 2024
0c2250d
Lookup code once
benaadams Jul 11, 2024
07beadb
Use correct static flag
benaadams Jul 11, 2024
f0667bd
Invert failure for EOF
benaadams Jul 11, 2024
3c203f3
Tidy up
benaadams Jul 11, 2024
0d99150
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 11, 2024
207a05b
fix EXTDELEGATECALL
benaadams Jul 11, 2024
adf2c78
* minor refactor
Demuirgos Jul 12, 2024
617c30e
* fix index out of range in EOFCREATE
Demuirgos Jul 12, 2024
58c2168
formatting
benaadams Jul 12, 2024
af36d4e
Fix address extension checks
benaadams Jul 13, 2024
a539c17
Fix returndatacopy
benaadams Jul 13, 2024
f3b32ed
Update tests versions
benaadams Jul 15, 2024
71891af
Include code for tx creates
benaadams Jul 15, 2024
becbade
Use bytecode
benaadams Jul 15, 2024
6b8926d
* fix RETURNCONTRACT data section handling
Demuirgos Jul 15, 2024
34cf80a
formatting
benaadams Jul 15, 2024
4104ebe
* Fix to RETURNCONTRACT targeting wrong container
Demuirgos Jul 15, 2024
9aedcbc
Merge branch 'feature/evm/eof' of https://github.com/NethermindEth/ne…
Demuirgos Jul 15, 2024
d49a80c
* Fix overflow and underflow check in RETURNCONTRACT
Demuirgos Jul 15, 2024
a81e2b6
* Aligned TxCreate with EOFCREATE
Demuirgos Jul 16, 2024
ebf4a82
* fix failing build test
Demuirgos Jul 16, 2024
241f095
* fix CREATETX deploy gas value
Demuirgos Jul 16, 2024
ead0ebc
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 16, 2024
bbf305e
* Add EofBlockChainTests
Demuirgos Jul 17, 2024
744bf19
Include more detail in logs
benaadams Jul 17, 2024
cbdbea7
Fix DATACOPY gas
benaadams Jul 17, 2024
f9aa9c5
better fix
benaadams Jul 17, 2024
0f43515
* remove unnecessary validation
Demuirgos Jul 17, 2024
91063aa
* perform datasize overflow and underflow in ReturnContract regardles…
Demuirgos Jul 17, 2024
a3b2292
Max container size is MAX_INITCODE_SIZE
benaadams Jul 17, 2024
d9ed010
* fix maxCodeSize check
Demuirgos Jul 17, 2024
ed7eddd
Merge branch 'feature/evm/eof' of https://github.com/NethermindEth/ne…
Demuirgos Jul 17, 2024
794b1dc
Use section max size
benaadams Jul 17, 2024
5f3d9c3
* Added Eip3860 check and cost
Demuirgos Jul 17, 2024
2817f1e
Merge branch 'feature/evm/eof' of https://github.com/NethermindEth/ne…
Demuirgos Jul 17, 2024
a9985d0
* remove Eip3860 check
Demuirgos Jul 17, 2024
7547caa
Tidy up
benaadams Jul 17, 2024
38f378f
Add new tests
benaadams Jul 18, 2024
e19be65
Fix initcode failure states
benaadams Jul 18, 2024
584cc43
Fix Evm tests
benaadams Jul 18, 2024
49f3b8e
Update current state for RETURNCONTRACT
benaadams Jul 18, 2024
72a8919
Merge branch 'master' into feature/evm/eof
benaadams Jul 18, 2024
ad5edf7
Mark test as incorrect
benaadams Jul 18, 2024
ece6ba8
Tidy up usings
benaadams Jul 18, 2024
dd347e0
Update tests to v1.0.7
benaadams Jul 20, 2024
5745549
Merge branch 'master' into feature/evm/eof
benaadams Jul 20, 2024
c31667b
Spelling
benaadams Jul 20, 2024
a501030
Simpler if
benaadams Jul 20, 2024
99e934d
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 22, 2024
f63a833
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Jul 26, 2024
b3aec67
Merge branch 'master' into feature/evm/eof
benaadams Aug 14, 2024
333daed
Merge branch 'master' into feature/evm/eof
benaadams Aug 15, 2024
b5d5dd6
Update tests
benaadams Aug 15, 2024
b48ed47
add missing opcodes from metadata dictionary
Demuirgos Aug 20, 2024
871be2f
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Aug 20, 2024
b65bab4
* refactor nested containers validations
Demuirgos Aug 26, 2024
95ee042
Merge remote-tracking branch 'origin/master' into feature/evm/eof
Demuirgos Aug 26, 2024
d9c16c4
* index out of range fix
Demuirgos Aug 26, 2024
e098dcb
* remove unnecessary double check
Demuirgos Aug 26, 2024
c5080f7
* fix wrong boundary check
Demuirgos Aug 26, 2024
0f115b4
* Added EOFCREATE / RETURNCONTRACT null checks
Demuirgos Aug 26, 2024
43559a9
Add new EOF tests format for Pyspec tests (#7344)
Demuirgos Sep 3, 2024
b8f160b
Merge branch 'master' into feature/evm/eof
benaadams Sep 3, 2024
6f762b8
Add EOFTest CLI Support (#7383)
benaadams Sep 3, 2024
19d35ec
Merge branch 'master' into feature/evm/eof
benaadams Sep 3, 2024
ae9201a
Merge branch 'master' into feature/evm/eof
benaadams Sep 5, 2024
56377ea
Fix stackoverflow in tests
benaadams Sep 5, 2024
39c6c7e
Fix subsection init
benaadams Sep 5, 2024
970a4f3
Update tests
benaadams Sep 9, 2024
35d724e
ssert tests
shemnon Sep 9, 2024
42f502a
Eof/valdiation fixes (#7405)
shemnon Sep 10, 2024
ba5f05e
Merge branch 'master' into feature/evm/eof
benaadams Sep 16, 2024
8ee4221
Merge branch 'master' into feature/evm/eof
benaadams Sep 16, 2024
d4980f4
Break tests up
benaadams Sep 17, 2024
b02e797
Formatting
benaadams Sep 17, 2024
4d8ac02
Clarify tests
benaadams Sep 18, 2024
1b7df28
Fix bitmaps
benaadams Sep 18, 2024
d8f954e
Merge branch 'master' into feature/evm/eof
benaadams Sep 18, 2024
3d24a08
Containers start at 1
benaadams Sep 18, 2024
42199a2
Handle push0 properly
benaadams Sep 18, 2024
150855e
Update tests
benaadams Sep 23, 2024
74925fe
Merge branch 'master' into feature/evm/eof
benaadams Sep 23, 2024
09de61c
Merge conflict
benaadams Sep 23, 2024
86645b9
Output more info for failing tests
benaadams Sep 24, 2024
74a21df
Merge branch 'master' into feature/evm/eof
benaadams Sep 26, 2024
8627577
Merge conflict
benaadams Sep 26, 2024
f8ee255
Update tests
benaadams Sep 26, 2024
370c2c3
Fix remaining EOF validation issues (#7556)
shemnon Oct 5, 2024
6cc5616
Merge branch 'master' into eof-merge
benaadams Oct 9, 2024
7940272
Merge conflicts
benaadams Oct 9, 2024
e8a39ea
Merge branch 'master' into feature/evm/eof
benaadams Oct 10, 2024
84237e6
Merge branch 'master' into feature/evm/eof
benaadams Oct 10, 2024
7076d32
Merge branch 'master' into feature/evm/eof
benaadams Oct 14, 2024
d5b7fb1
Merge conflict
benaadams Oct 15, 2024
a747bd4
Merge branch 'master' into feature/evm/eof
benaadams Oct 15, 2024
4fc4b70
Merge branch 'master' into feature/evm/eof
benaadams Oct 23, 2024
6a477c2
Merge branch 'master' into feature/evm/eof
benaadams Oct 24, 2024
d9dd09e
Adaot to EEST Osaka Activation (#7657)
shemnon Oct 26, 2024
39733d2
Merge branch 'master' into feature/evm/eof
benaadams Jan 28, 2025
c850168
Merge branch 'master' into feature/evm/eof
benaadams Jan 28, 2025
17dd735
Formatting & missing ref
benaadams Jan 28, 2025
c33fa89
Fix test
benaadams Jan 28, 2025
022f9ab
csproj
benaadams Jan 28, 2025
2b19f4c
Fix create gas
benaadams Jan 28, 2025
cff2a83
Merge branch 'master' into feature/evm/eof
benaadams Jan 28, 2025
3910982
fix build
benaadams Jan 28, 2025
50955b8
Fix Evm tests
benaadams Jan 28, 2025
e60f58b
Merge branch 'master' into feature/evm/eof
benaadams Jan 28, 2025
7415eea
Use correct stack
benaadams Jan 28, 2025
4a22a1c
Compile error
benaadams Jan 28, 2025
0e61f6e
Update Eof tests
benaadams Jan 28, 2025
50e1220
Update Eof tests
benaadams Jan 28, 2025
4dca7a4
Categorize tests better
benaadams Jan 28, 2025
d578bb3
Fix test discovery
benaadams Jan 28, 2025
b8f4e44
naming
benaadams Jan 29, 2025
920f66c
Merge branch 'master' into feature/evm/eof
benaadams Jan 29, 2025
57d0c28
Make non devnet-6 tests explicit
benaadams Jan 29, 2025
d0617c8
Add EOF tracing fields (#8127)
shemnon Jan 30, 2025
b36cdb5
Merge branch 'master' into feature/evm/eof
benaadams Jan 30, 2025
616505e
Merge branch 'master' into feature/evm/eof
benaadams Jan 31, 2025
4d3ba97
Refactor Evm
benaadams Jul 22, 2024
d316e73
Less indirection
benaadams Jan 31, 2025
a9949bf
Fixes
benaadams Jan 31, 2025
5c795bd
Clean up
benaadams Jan 31, 2025
dd36155
Tidy up
benaadams Jan 31, 2025
5cda52b
Try up
benaadams Jan 31, 2025
6d1617f
Spec changes
benaadams Jan 31, 2025
cbd8358
Reapply fixes
benaadams Jan 31, 2025
a7267a5
formating
benaadams Jan 31, 2025
665c79d
tweak
benaadams Feb 1, 2025
df9ffff
Merge conflicts
benaadams Feb 1, 2025
fac0832
Fix tracing
benaadams Feb 1, 2025
60ebed1
Fix gas
benaadams Feb 1, 2025
d986b2f
Merge branch 'master' into feature/evm/eof
benaadams Feb 1, 2025
7f6e239
Fix benchmarks
benaadams Feb 1, 2025
e563274
Add EofCall tracing
benaadams Feb 1, 2025
c1fcddf
InstructionReturnDataCopy
benaadams Feb 1, 2025
9846294
Fix static
benaadams Feb 1, 2025
3a512c7
Tidy up
benaadams Feb 1, 2025
a5dde38
Optimize
benaadams Feb 1, 2025
84c16ed
Data copy fix
benaadams Feb 1, 2025
f77e996
Fix stack underflow check
benaadams Feb 1, 2025
a0cf43a
Fix EofCall
benaadams Feb 1, 2025
00410ee
Fix EofCreate
benaadams Feb 1, 2025
f5853be
Fix gas for failed EOF validation
benaadams Feb 2, 2025
740d515
Trailing bytes
benaadams Feb 2, 2025
f7617ba
Optimize
benaadams Feb 2, 2025
fac8a61
Optimize
benaadams Feb 2, 2025
524fe8c
Optimize
benaadams Feb 2, 2025
9cef3ef
Optimize
benaadams Feb 2, 2025
6f4987a
Optimization
benaadams Feb 2, 2025
6846c13
Optimize
benaadams Feb 3, 2025
d14ea29
Optimize
benaadams Feb 3, 2025
4ee95fd
Add comment
benaadams Feb 3, 2025
20cfe69
Optimize
benaadams Feb 3, 2025
5fbc8cc
Optimize
benaadams Feb 3, 2025
ac05b5a
Optimize
benaadams Feb 3, 2025
b206a45
Merge branch 'master' into feature/evm/eof
benaadams Feb 3, 2025
575b899
Optimize
benaadams Feb 3, 2025
67153f3
Fix failing tests
benaadams Feb 3, 2025
5edcbed
Use KeccakCache
benaadams Feb 3, 2025
c4f211f
Optimize
benaadams Feb 4, 2025
05c0851
Tidy up
benaadams Feb 4, 2025
dbcc231
Add comments
benaadams Feb 4, 2025
8315efd
Add comments
benaadams Feb 4, 2025
b17f392
Comments
benaadams Feb 4, 2025
e1a46cf
Comments
benaadams Feb 4, 2025
a934244
Comments
benaadams Feb 4, 2025
f4a6372
Add comments
benaadams Feb 4, 2025
d1eacde
Comments
benaadams Feb 4, 2025
9bc1317
Add comments
benaadams Feb 4, 2025
8e7c6ad
Add comments
benaadams Feb 4, 2025
4a1ff05
Add comments
benaadams Feb 4, 2025
0011aed
Add comments
benaadams Feb 4, 2025
bd9a5b9
Add comments
benaadams Feb 4, 2025
47638b5
Tidy
benaadams Feb 4, 2025
a050765
Refactor
benaadams Feb 4, 2025
624b098
Merge branch 'master' into feature/evm/eof
benaadams Feb 4, 2025
e7aeb84
merge conflict
benaadams Feb 4, 2025
990f049
merge conflict
benaadams Feb 4, 2025
222cb44
Tidy up
benaadams Feb 5, 2025
19dd6f2
Refactor
benaadams Feb 5, 2025
dfae489
Removed unneeded parameter
benaadams Feb 5, 2025
2136999
Tidy up
benaadams Feb 5, 2025
f2dd20a
fix
benaadams Feb 5, 2025
8e6edad
fix
benaadams Feb 5, 2025
e013ad1
Merge branch 'master' into feature/evm/eof
benaadams Feb 5, 2025
5283990
Refactor
benaadams Feb 5, 2025
3b264bf
Add comments
benaadams Feb 5, 2025
e9a5b4e
Comments
benaadams Feb 5, 2025
edfa1c0
Merge branch 'master' into feature/evm/eof
benaadams Feb 5, 2025
9c277fb
Dial back test logging
benaadams Feb 5, 2025
d693d90
Tidy up
benaadams Feb 5, 2025
b24e37c
Tidy up
benaadams Feb 5, 2025
2a956fd
Dial back state test loggin
benaadams Feb 5, 2025
0910445
Improve code creation
benaadams Feb 5, 2025
b14808e
Improve
benaadams Feb 5, 2025
9cd3b37
More lazy
benaadams Feb 5, 2025
758d101
Others
benaadams Feb 5, 2025
e9fcdb1
Refatcor
benaadams Feb 5, 2025
aef435b
Tidy up
benaadams Feb 6, 2025
025506f
Refactor
benaadams Feb 6, 2025
36fb787
Tidy up
benaadams Feb 6, 2025
a0fac5a
tidy up
benaadams Feb 6, 2025
df45003
Refactor
benaadams Feb 6, 2025
97b4d08
readonly struct
benaadams Feb 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions src/Nethermind/Ethereum.Blockchain.Pyspec.Test/PragueStateTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// SPDX-FileCopyrightText: 2023 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System.Collections.Generic;
using System.Linq;
using Ethereum.Test.Base;
using FluentAssertions;
using NUnit.Framework;

namespace Ethereum.Blockchain.Pyspec.Test;

[TestFixture]
[Parallelizable(ParallelScope.All)]
public class PragueStateTests : GeneralStateTestBase
{
[TestCaseSource(nameof(LoadTests))]
public void Test(GeneralStateTest test) => RunTest(test).Pass.Should().BeTrue();

private static IEnumerable<GeneralStateTest> LoadTests()
{
TestsSourceLoader loader = new(new LoadPyspecTestsStrategy()
{
ArchiveName = "fixtures_eip7692.tar.gz",
ArchiveVersion = "[email protected]"
}, $"fixtures/state_tests/prague");
return loader.LoadTests().Cast<GeneralStateTest>();
}
}
19 changes: 12 additions & 7 deletions src/Nethermind/Ethereum.Blockchain.Test/EofTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// SPDX-License-Identifier: LGPL-3.0-only

using System.Collections.Generic;
using System.Linq;
using Ethereum.Test.Base;
using NUnit.Framework;

Expand All @@ -13,15 +14,19 @@ public class EOFTests : GeneralStateTestBase
{
// Uncomment when EOF tests are merged

// [TestCaseSource(nameof(LoadTests))]
// public void Test(GeneralStateTest test)
// {
// Assert.True(RunTest(test).Pass);
// }
[TestCaseSource(nameof(LoadTests))]
public void Test(GeneralStateTest test)
{
Assert.True(RunTest(test).Pass);
}

public static IEnumerable<GeneralStateTest> LoadTests()
{
var loader = new TestsSourceLoader(new LoadEipTestsStrategy(), "stEOF");
return (IEnumerable<GeneralStateTest>)loader.LoadTests();
var eip3540Loader = (IEnumerable<GeneralStateTest>)(new TestsSourceLoader(new LoadEofTestsStrategy(), "stEIP3540").LoadTests());
var eip3670Loader = (IEnumerable<GeneralStateTest>)(new TestsSourceLoader(new LoadEofTestsStrategy(), "stEIP3670").LoadTests());
var eip4200Loader = (IEnumerable<GeneralStateTest>)(new TestsSourceLoader(new LoadEofTestsStrategy(), "stEIP4200").LoadTests());
var eip4750Loader = (IEnumerable<GeneralStateTest>)(new TestsSourceLoader(new LoadEofTestsStrategy(), "stEIP4750").LoadTests());
var eip5450Loader = (IEnumerable<GeneralStateTest>)(new TestsSourceLoader(new LoadEofTestsStrategy(), "stEIP5450").LoadTests());
return eip3540Loader.Concat(eip3670Loader).Concat(eip4200Loader).Concat(eip4750Loader).Concat(eip5450Loader);
}
}
72 changes: 72 additions & 0 deletions src/Nethermind/Ethereum.Test.Base/LoadEofTestsStrategy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System;
using System.Collections.Generic;
using System.IO;
using Ethereum.Test.Base.Interfaces;

namespace Ethereum.Test.Base
{
public class LoadEofTestsStrategy : ITestLoadStrategy
{
public IEnumerable<IEthereumTest> Load(string testsDirectoryName, string wildcard = null)
{
IEnumerable<string> testDirs;
if (!Path.IsPathRooted(testsDirectoryName))
{
string testsDirectory = GetGeneralStateTestsDirectory();


testDirs = Directory.EnumerateDirectories(testsDirectory, testsDirectoryName, new EnumerationOptions { RecurseSubdirectories = true });
}
else
{
testDirs = new[] { testsDirectoryName };
}

List<GeneralStateTest> testJsons = new();
foreach (string testDir in testDirs)
{
testJsons.AddRange(LoadTestsFromDirectory(testDir, wildcard));
}

return testJsons;
}

private string GetGeneralStateTestsDirectory()
{
char pathSeparator = Path.AltDirectorySeparatorChar;
string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;

return currentDirectory.Remove(currentDirectory.LastIndexOf("src")) + $"src{pathSeparator}tests{pathSeparator}EIPTests{pathSeparator}StateTests{pathSeparator}stEOF";
}

private IEnumerable<GeneralStateTest> LoadTestsFromDirectory(string testDir, string wildcard)
{
List<GeneralStateTest> testsByName = new();
IEnumerable<string> testFiles = Directory.EnumerateFiles(testDir);

foreach (string testFile in testFiles)
{
FileTestsSource fileTestsSource = new(testFile, wildcard);
try
{
var tests = fileTestsSource.LoadGeneralStateTests();
foreach (GeneralStateTest blockchainTest in tests)
{
blockchainTest.Category = testDir;
}

testsByName.AddRange(tests);
}
catch (Exception e)
{
testsByName.Add(new GeneralStateTest { Name = testFile, LoadFailure = $"Failed to load: {e}" });
}
}

return testsByName;
}
}
}
12 changes: 12 additions & 0 deletions src/Nethermind/Nethermind.Consensus/Messages/TxErrorMessages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,16 @@ public static string InvalidTxChainId(ulong expected, ulong? actual) =>

public const string InvalidBlobData
= "InvalidTxBlobData: Number of blobs, hashes, commitments and proofs must match.";

public const string InvalidCreateTxData
= "InvalidCreateTxData: Legacy createTx cannot create Eof code";

public const string TooManyEofInitcodes
= $"TooManyEofInitcodes: Eof initcodes count exceeded limit";

public const string EmptyEofInitcodesField
= $"EmptyEofInitcodesField: Eof initcodes count must be greater than 0";

public const string EofContractSizeInvalid
= "EofContractSizeInvalid: Eof initcode size is invalid (either 0 or too big)";
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Nethermind.Core.Specs;
using Nethermind.Crypto;
using Nethermind.Evm;
using Nethermind.Evm.EOF;
using Nethermind.Int256;
using Nethermind.TxPool;

Expand Down
57 changes: 57 additions & 0 deletions src/Nethermind/Nethermind.Core/Extensions/Bytes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public static unsafe partial class Bytes
public static readonly BytesComparer Comparer = new();
public static readonly ReadOnlyMemory<byte> ZeroByte = new byte[] { 0 };
public static readonly ReadOnlyMemory<byte> OneByte = new byte[] { 1 };
public static readonly ReadOnlyMemory<byte> TwoByte = new byte[] { 2 };

private class BytesEqualityComparer : EqualityComparer<byte[]>
{
Expand Down Expand Up @@ -364,6 +365,62 @@ public static BigInteger ToUnsignedBigInteger(this ReadOnlySpan<byte> bytes)
{
return new(bytes, true, true);
}
public static short ReadEthInt16(this Span<byte> bytes)
{
return ReadEthInt16((ReadOnlySpan<byte>)bytes);
}

public static short ReadEthInt16(this ReadOnlySpan<byte> bytes)
{
if (bytes.Length > 2)
{
bytes = bytes.Slice(bytes.Length - 2, 2);
}

return bytes.Length switch
{
2 => BinaryPrimitives.ReadInt16BigEndian(bytes),
1 => bytes[0],
_ => 0
};
}

public static ushort ReadEthUInt16(this Span<byte> bytes)
{
return ReadEthUInt16((ReadOnlySpan<byte>)bytes);
}

public static ushort ReadEthUInt16(this ReadOnlySpan<byte> bytes)
{
if (bytes.Length > 2)
{
bytes = bytes.Slice(bytes.Length - 2, 2);
}

return bytes.Length switch
{
2 => BinaryPrimitives.ReadUInt16BigEndian(bytes),
1 => bytes[0],
_ => 0
};
}

public static ushort ReadEthUInt16LittleEndian(this Span<byte> bytes)
{
if (bytes.Length > 2)
{
bytes = bytes.Slice(bytes.Length - 2, 2);
}

if (bytes.Length == 2)
{
return BinaryPrimitives.ReadUInt16LittleEndian(bytes);
}

Span<byte> twoBytes = stackalloc byte[2];
bytes.CopyTo(twoBytes[(2 - bytes.Length)..]);
return BinaryPrimitives.ReadUInt16LittleEndian(twoBytes);
}

public static uint ReadEthUInt32(this Span<byte> bytes)
{
Expand Down
32 changes: 32 additions & 0 deletions src/Nethermind/Nethermind.Core/Extensions/Int16Extensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System;
using System.Buffers.Binary;

namespace Nethermind.Core.Extensions;

public static class short16Extensions
{
public static byte[] ToByteArray(this short value)
{
byte[] bytes = new byte[sizeof(short)];
BinaryPrimitives.WriteInt16BigEndian(bytes, value);
return bytes;
}

public static byte[] ToBigEndianByteArray(this ushort value)
{
byte[] bytes = BitConverter.GetBytes(value);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(bytes);
}

return bytes;
}

public static byte[] ToBigEndianByteArray(this short value)
=> ToBigEndianByteArray((ushort)value);

}
6 changes: 5 additions & 1 deletion src/Nethermind/Nethermind.Core/Extensions/Int64Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public static byte[] ToBigEndianByteArrayWithoutLeadingZeros(this long value)
}
}

public static byte[] ToBigEndianByteArray(this long value)
public static byte[] ToBigEndianByteArray(this ulong value)
{
byte[] bytes = BitConverter.GetBytes(value);
if (BitConverter.IsLittleEndian)
Expand All @@ -127,6 +127,10 @@ public static byte[] ToBigEndianByteArray(this long value)

return bytes;
}

public static byte[] ToBigEndianByteArray(this long value)
=> ToBigEndianByteArray((ulong)value);

public static void WriteBigEndian(this long value, Span<byte> output)
{
BinaryPrimitives.WriteInt64BigEndian(output, value);
Expand Down
5 changes: 4 additions & 1 deletion src/Nethermind/Nethermind.Core/Extensions/IntExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public static byte[] ToByteArray(this int value)
return bytes;
}

public static byte[] ToBigEndianByteArray(this int value)
public static byte[] ToBigEndianByteArray(this uint value)
{
byte[] bytes = BitConverter.GetBytes(value);
if (BitConverter.IsLittleEndian)
Expand All @@ -46,4 +46,7 @@ public static byte[] ToBigEndianByteArray(this int value)

return bytes;
}

public static byte[] ToBigEndianByteArray(this int value)
=> ToBigEndianByteArray((uint)value);
}
5 changes: 5 additions & 0 deletions src/Nethermind/Nethermind.Core/Specs/IReleaseSpec.cs
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,11 @@ public interface IReleaseSpec : IEip1559Spec, IReceiptSpec
/// </summary>
bool IsEip6780Enabled { get; }

/// <summary>
/// Eof execution env in EVM
/// </summary>
bool IsEofEnabled { get; }

/// <summary>
/// Secp256r1 precompile
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm.Benchmark/EvmBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void GlobalSetup()
codeInfo: new CodeInfo(ByteCode),
value: 0,
transferValue: 0,
txExecutionContext: new TxExecutionContext(_header, Address.Zero, 0, null),
txExecutionContext: new TxExecutionContext(_header, Address.Zero, 0, []),
inputData: default
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public void GlobalSetup()
codeInfo: new CodeInfo(_bytecode.Concat(_bytecode).Concat(_bytecode).Concat(_bytecode).ToArray()),
value: 0,
transferValue: 0,
txExecutionContext: new TxExecutionContext(_header, Address.Zero, 0, null),
txExecutionContext: new TxExecutionContext(_header, Address.Zero, 0, []),
inputData: default
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public void GlobalSetup()
codeInfo: new CodeInfo(Bytecode),
value: 0,
transferValue: 0,
txExecutionContext: new TxExecutionContext(_header, Address.Zero, 0, null),
txExecutionContext: new TxExecutionContext(_header, Address.Zero, 0, []),
inputData: default
);

Expand Down
Loading
Loading