Skip to content

Implement EIP-5920: PAY #8382

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

Draft
wants to merge 380 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
380 commits
Select commit Hold shift + click to select a range
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
20da4b1
Tidy up
benaadams Feb 6, 2025
6d2415b
Merge branch 'master' into feature/evm/eof
benaadams Feb 6, 2025
f987ef9
Merge branch 'master' into feature/evm/eof
benaadams Feb 6, 2025
daa6a76
Optimize
benaadams Feb 8, 2025
cd7a4ea
Merge branch 'master' into feature/evm/eof
benaadams Feb 11, 2025
e1e375c
Legacy should not be able to deploy eof
benaadams Feb 12, 2025
86f39c5
Merge branch 'master' into feature/evm/eof
benaadams Feb 14, 2025
d931e5b
merge conflict
benaadams Feb 15, 2025
2772f42
Merge branch 'master' into feature/evm/eof
benaadams Feb 15, 2025
bb96661
Merge branch 'master' into feature/evm/eof
benaadams Feb 15, 2025
6350b85
Address eof-devnet-0 valdation errors (#8213)
shemnon Feb 16, 2025
0258716
Merge branch 'master' into feature/evm/eof
benaadams Feb 17, 2025
8032f4f
Merge branch 'master' into feature/evm/eof
benaadams Mar 6, 2025
98045e2
Merge conflicts
benaadams Mar 6, 2025
ac0537a
Spec update RETURNCONTRACT -> RETURNCODE
benaadams Mar 6, 2025
a3196d8
Format
benaadams Mar 7, 2025
75fa2bb
Merge branch 'master' into feature/evm/eof
benaadams Mar 7, 2025
c0581e1
Feedback
benaadams Mar 7, 2025
4e8d063
Merge branch 'master' into feature/evm/eof
benaadams Mar 7, 2025
dd599e1
Add Nethermind.EOFParse.Runner back to solution
benaadams Mar 7, 2025
3d3eb62
byte.MaxValue
benaadams Mar 7, 2025
f5d845a
Expression
benaadams Mar 7, 2025
727c95a
Add trim
benaadams Mar 7, 2025
78d5d7b
Update src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.cs
benaadams Mar 7, 2025
c3a2649
max + 1
benaadams Mar 7, 2025
78b1257
Merge branch 'feature/evm/eof' of https://github.com/NethermindEth/ne…
benaadams Mar 7, 2025
00d3feb
Fix tracing
benaadams Mar 7, 2025
62b447a
Different fix
benaadams Mar 7, 2025
aea3c63
fix trace
benaadams Mar 7, 2025
59ea14e
Merge branch 'master' into feature/evm/eof
benaadams Mar 7, 2025
3d893e2
Update test versions
benaadams Mar 7, 2025
13d1ba3
Fix max code size
benaadams Mar 7, 2025
3d2740d
Enable Oaska blockchain tests
benaadams Mar 8, 2025
d296b20
Merge branch 'master' into feature/evm/eof
benaadams Mar 8, 2025
40b8655
Tracer extensions
benaadams Mar 8, 2025
f5404c6
Add Flags attribute to ValidationStrategy + sp
benaadams Mar 8, 2025
564e9fe
Remove legacy tests
benaadams Mar 8, 2025
e9282af
Feedback
benaadams Mar 8, 2025
a378022
Gas to private
benaadams Mar 8, 2025
36f47f6
Update src/Nethermind/Nethermind.Evm/CodeInfoFactory.cs
benaadams Mar 8, 2025
3a27a98
Fomratting
benaadams Mar 8, 2025
939a277
Remove CommandLineParser
benaadams Mar 8, 2025
02e9a24
Compile error
benaadams Mar 8, 2025
dba97de
Feedback
benaadams Mar 8, 2025
12c5cb7
Tidy
benaadams Mar 8, 2025
6764b31
Use Volatile.Write
benaadams Mar 8, 2025
98c1bb5
Add comments
benaadams Mar 8, 2025
bea6766
Add comments to EvmIntructions
benaadams Mar 8, 2025
1984ba9
Explicit implementation
benaadams Mar 8, 2025
3de2526
Move contract deployment to own methods
benaadams Mar 8, 2025
8b2d461
fix, optimize
benaadams Mar 8, 2025
782a5ea
Using thread priority extensions
benaadams Mar 8, 2025
fa3c57f
Specialize ICodeInfo more and comment
benaadams Mar 8, 2025
5992f41
Merge branch 'master' into feature/evm/eof
benaadams Mar 13, 2025
59c4361
Merge branch 'master' into feature/evm/eof
benaadams Mar 14, 2025
3f3cba2
Optimize PUSH2+JUMP
benaadams Mar 15, 2025
104d17d
Merge branch 'master' into feature/evm/eof
benaadams Mar 15, 2025
27618a9
Feedback
benaadams Mar 17, 2025
5403b10
Merge branch 'master' into feature/evm/eof
benaadams Mar 17, 2025
6502e03
Test
benaadams Mar 17, 2025
10c6111
Remove catch
benaadams Mar 17, 2025
0273004
Merge branch 'master' into feature/evm/eof
benaadams Mar 17, 2025
4d51d7e
Check
benaadams Mar 17, 2025
2cc4bbe
Use correct JUMPI opcode
benaadams Mar 17, 2025
b4e2bf4
Merge branch 'master' into feature/evm/eof
benaadams Mar 17, 2025
5b2b57d
Implement EIP-5920: PAY
benaadams Mar 18, 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
2 changes: 1 addition & 1 deletion src/Nethermind/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,4 @@
<PackageVersion Include="Websocket.Client" Version="5.1.2" />
<PackageVersion Include="ZstdSharp.Port" Version="0.8.4" />
</ItemGroup>
</Project>
</Project>
1 change: 0 additions & 1 deletion src/Nethermind/Ethereum.Basic.Test/TransactionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using System.IO;
using System.Linq;
using System.Numerics;
using System.Text.Json.Serialization;

using Ethereum.Test.Base;
using Nethermind.Core;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="coverlet.collector">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="NUnit" />
<PackageReference Include="NUnit.Analyzers">
<PrivateAssets>all</PrivateAssets>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ namespace Ethereum.Blockchain.Pyspec.Test;

public class LoadPyspecTestsStrategy : ITestLoadStrategy
{
private enum TestType
{
Blockchain,
GeneralState,
Eof
}
public string ArchiveVersion { get; init; } = Constants.DEFAULT_ARCHIVE_VERSION;
public string ArchiveName { get; init; } = Constants.DEFAULT_ARCHIVE_NAME;

Expand All @@ -23,11 +29,16 @@ public IEnumerable<EthereumTest> Load(string testsDir, string wildcard = null)
string testsDirectoryName = Path.Combine(AppContext.BaseDirectory, "PyTests", ArchiveVersion, ArchiveName.Split('.')[0]);
if (!Directory.Exists(testsDirectoryName)) // Prevent redownloading the fixtures if they already exists with this version and archive name
DownloadAndExtract(ArchiveVersion, ArchiveName, testsDirectoryName);
bool isStateTest = testsDir.Contains("state_tests", StringComparison.InvariantCultureIgnoreCase);
TestType testType = testsDir.Contains("state_tests", StringComparison.InvariantCultureIgnoreCase)
? TestType.GeneralState
: testsDir.Contains("eof_tests", StringComparison.InvariantCultureIgnoreCase)
? TestType.Eof
: TestType.Blockchain;

IEnumerable<string> testDirs = !string.IsNullOrEmpty(testsDir)
? Directory.EnumerateDirectories(Path.Combine(testsDirectoryName, testsDir), "*", new EnumerationOptions { RecurseSubdirectories = true })
: Directory.EnumerateDirectories(testsDirectoryName, "*", new EnumerationOptions { RecurseSubdirectories = true });
return testDirs.SelectMany(td => LoadTestsFromDirectory(td, wildcard, isStateTest));
return testDirs.SelectMany(td => LoadTestsFromDirectory(td, wildcard, testType));
}

private void DownloadAndExtract(string archiveVersion, string archiveName, string testsDirectoryName)
Expand All @@ -44,7 +55,7 @@ private void DownloadAndExtract(string archiveVersion, string archiveName, strin
TarFile.ExtractToDirectory(gzStream, testsDirectoryName, true);
}

private IEnumerable<EthereumTest> LoadTestsFromDirectory(string testDir, string wildcard, bool isStateTest)
private IEnumerable<EthereumTest> LoadTestsFromDirectory(string testDir, string wildcard, TestType testType)
{
List<EthereumTest> testsByName = new();
IEnumerable<string> testFiles = Directory.EnumerateFiles(testDir);
Expand All @@ -54,20 +65,28 @@ private IEnumerable<EthereumTest> LoadTestsFromDirectory(string testDir, string
FileTestsSource fileTestsSource = new(testFile, wildcard);
try
{
IEnumerable<EthereumTest> tests = isStateTest
? fileTestsSource.LoadGeneralStateTests()
: fileTestsSource.LoadBlockchainTests();
IEnumerable<EthereumTest> tests = testType switch
{
TestType.Eof => fileTestsSource.LoadEofTests(),
TestType.GeneralState => fileTestsSource.LoadGeneralStateTests(),
_ => fileTestsSource.LoadBlockchainTests()
};

foreach (EthereumTest test in tests)
{
test.Category = testDir;
test.Category ??= testDir;
}
testsByName.AddRange(tests);
}
catch (Exception e)
{
EthereumTest failedTest = isStateTest
? new GeneralStateTest()
: new BlockchainTest();
EthereumTest failedTest = testType switch
{
TestType.Eof => new EofTest(),
TestType.GeneralState => new GeneralStateTest(),
_ => new BlockchainTest()
};

failedTest.Name = testDir;
failedTest.LoadFailure = $"Failed to load: {e}";
testsByName.Add(failedTest);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// SPDX-FileCopyrightText: 2024 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

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

namespace Ethereum.Blockchain.Pyspec.Test;

[TestFixture]
[Parallelizable(ParallelScope.All)]
public class OsakaBlockChainTests : BlockchainTestBase
{
[TestCaseSource(nameof(LoadTests))]
public async Task Test(BlockchainTest test) => await RunTest(test);

private static IEnumerable<TestCaseData> LoadTests()
{
TestsSourceLoader loader = new(new LoadPyspecTestsStrategy()
{
ArchiveName = "fixtures_eip7692.tar.gz",
ArchiveVersion = "[email protected]"
}, $"fixtures/blockchain_tests/osaka");
return loader.LoadTests().OfType<BlockchainTest>().Select(t => new TestCaseData(t)
.SetName(t.Name)
.SetCategory(t.Category));
}
}
29 changes: 29 additions & 0 deletions src/Nethermind/Ethereum.Blockchain.Pyspec.Test/OsakaEofTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// 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 NUnit.Framework;

namespace Ethereum.Blockchain.Pyspec.Test;

[TestFixture]
[Parallelizable(ParallelScope.All)]
public class OsakaEofTests : EofTestBase
{
[TestCaseSource(nameof(LoadTests))]
public void Test(EofTest test) => RunCITest(test);

private static IEnumerable<TestCaseData> LoadTests()
{
TestsSourceLoader loader = new(new LoadPyspecTestsStrategy()
{
ArchiveName = "fixtures_eip7692.tar.gz",
ArchiveVersion = "[email protected]"
}, $"fixtures/eof_tests/osaka");
return loader.LoadTests().Cast<EofTest>().Select(t => new TestCaseData(t)
.SetName(t.Name)
.SetCategory(t.Category));
}
}
30 changes: 30 additions & 0 deletions src/Nethermind/Ethereum.Blockchain.Pyspec.Test/OsakaStateTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// 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 OsakaStateTests : GeneralStateTestBase
{
[TestCaseSource(nameof(LoadTests))]
public void Test(GeneralStateTest test) => RunTest(test).Pass.Should().BeTrue();

private static IEnumerable<TestCaseData> LoadTests()
{
TestsSourceLoader loader = new(new LoadPyspecTestsStrategy()
{
ArchiveName = "fixtures_eip7692.tar.gz",
ArchiveVersion = "[email protected]"
}, $"fixtures/state_tests/osaka");
return loader.LoadTests().Cast<GeneralStateTest>().Select(t => new TestCaseData(t)
.SetName(t.Name)
.SetCategory(t.Category));
}
}
22 changes: 0 additions & 22 deletions src/Nethermind/Ethereum.Blockchain.Pyspec.Test/PragueStateTests.cs

This file was deleted.

1 change: 0 additions & 1 deletion src/Nethermind/Ethereum.Blockchain.Test/BadOpcodeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// SPDX-License-Identifier: LGPL-3.0-only

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

Expand Down
27 changes: 0 additions & 27 deletions src/Nethermind/Ethereum.Blockchain.Test/EofTests.cs

This file was deleted.

3 changes: 1 addition & 2 deletions src/Nethermind/Ethereum.Test.Base/BlockchainTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ namespace Ethereum.Test.Base;

public abstract class BlockchainTestBase
{
private static InterfaceLogger _logger = new NUnitLogger(LogLevel.Trace);
// private static ILogManager _logManager = new OneLoggerLogManager(_logger);
private static InterfaceLogger _logger = new NUnitLogger(LogLevel.Info);
private static ILogManager _logManager = LimboLogs.Instance;
private static ISealValidator Sealer { get; }
private static DifficultyCalculatorWrapper DifficultyCalculator { get; }
Expand Down
28 changes: 28 additions & 0 deletions src/Nethermind/Ethereum.Test.Base/EofTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// SPDX-FileCopyrightText: 2024 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using Ethereum.Test.Base.Interfaces;
using Nethermind.Evm.EvmObjectFormat;

namespace Ethereum.Test.Base;
public class Result
{
public string Fork { get; set; }
public bool Success { get; set; }
public string? Error { get; set; }
}

public class VectorTest
{
public byte[] Code { get; set; }
public ValidationStrategy ContainerKind { get; set; }
}

public class EofTest : EthereumTest
{
public VectorTest Vector { get; set; }
public Result Result { get; internal set; }
public string? Description { get; set; }
public string? Url { get; set; }
public string? Spec { get; set; }
}
77 changes: 77 additions & 0 deletions src/Nethermind/Ethereum.Test.Base/EofTestBase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System;
using Nethermind.Evm;
using Nethermind.Evm.Tracing;
using Nethermind.Logging;
using NUnit.Framework;
using Nethermind.Evm.EvmObjectFormat;

namespace Ethereum.Test.Base
{
public abstract class EofTestBase
{
private static ILogger _logger = new(TextContextLogger.Instance);
private static ILogManager _logManager = new TestLogManager(LogLevel.Warn);

[SetUp]
public void Setup()
{
EofValidator.Logger = _logger;
}

protected static void Setup(ILogManager logManager)
{
_logManager = logManager ?? LimboLogs.Instance;
_logger = _logManager.GetClassLogger();
}

protected void RunCITest(EofTest test)
{
var result = RunTest(test, NullTxTracer.Instance);

if (result != test.Result.Success)
{
_logger.Info($"Spec: {test.Spec}");
_logger.Info(test.Description);
_logger.Info($"Url: {test.Url}");
}

Assert.That(result, Is.EqualTo(test.Result.Success));
}

protected bool RunTest(EofTest test)
{
return RunTest(test, NullTxTracer.Instance) == test.Result.Success;
}

protected bool RunTest(EofTest test, ITxTracer txTracer)
{
TestContext.Out.WriteLine($"Running {test.Name} at {DateTime.UtcNow:HH:mm:ss.ffffff}");
Assert.That(test.LoadFailure, Is.Null, "test data loading failure");

var vector = test.Vector;
var code = vector.Code;
var strategy = vector.ContainerKind;
var fork = test.Result.Fork switch
{
"Osaka" => Nethermind.Specs.Forks.Osaka.Instance,
"Prague" => Nethermind.Specs.Forks.Prague.Instance,
"Berlin" => Nethermind.Specs.Forks.Berlin.Instance,
"London" => Nethermind.Specs.Forks.London.Instance,
"Shanghai" => Nethermind.Specs.Forks.Shanghai.Instance,
"Constantinople" => Nethermind.Specs.Forks.Constantinople.Instance,
"Byzantium" => Nethermind.Specs.Forks.Byzantium.Instance,
"SpuriousDragon" => Nethermind.Specs.Forks.SpuriousDragon.Instance,
"TangerineWhistle" => Nethermind.Specs.Forks.TangerineWhistle.Instance,
"Homestead" => Nethermind.Specs.Forks.Homestead.Instance,
"Frontier" => Nethermind.Specs.Forks.Frontier.Instance,
_ => throw new NotSupportedException($"Fork {test.Result.Fork} is not supported")
};

bool result = CodeDepositHandler.IsValidWithEofRules(fork, code, 1, strategy);
return result;
}
}
}
17 changes: 17 additions & 0 deletions src/Nethermind/Ethereum.Test.Base/EofTestJson.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace Ethereum.Test.Base
{
public class EofTestJson
{
[JsonPropertyName("_info")]
public GeneralStateTestInfoJson? Info { get; set; }

public Dictionary<string, VectorTestJson> Vectors { get; set; }

}
}
2 changes: 0 additions & 2 deletions src/Nethermind/Ethereum.Test.Base/EthereumTestResult.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System.Text.Json.Serialization;

using Nethermind.Core.Crypto;

namespace Ethereum.Test.Base
Expand Down
Loading
Loading