-
Notifications
You must be signed in to change notification settings - Fork 187
Closed
Labels
feature:zkevmtrackerTracking issue for projects with sub-tasksTracking issue for projects with sub-tasks
Description
Summary
The Nethermind team is currently working on benchmark tests to support raising the gas limit. This issue serves as a tracker for porting tests from this PR.
If the test case already exists in EEST, there’s no need to port it from Nethermind, please provide a link to the relevant EEST code snippet. If the test needs to be added, kindly share the PR link.
Category
block
- Warmup
- Warmup - Done, Discussion
- ETH transfers: Link
- ETH transfers - feat(benchmark): create pure ether transfer worst case #1742
- Transactions: Link
- Tx with big zero data - feat(benchmark): add pure calldata transaction case #1820
Opcode
Arithmetic
Cryptographic
- KECCAK256 (
0x20): Link - Done, Discussion- Keccak256 from 1 byte
- Keccak256 from 8 bytes
- Keccak256 from 32 bytes
Stateful Opcodes
- SELFBALANCE (
0x47) - refactor(tests): updateMSIZEandSELFBALANCEbenchmark test #1771- SimpleInstructionTwoContracts (Endlessly pushing self balance to stack (1000 per 1 contract))
Termination
Environment
- CALLER (
0x33)- SimpleInstructionTwoContracts (Endlessly pushing caller address to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- SimpleInstructionSingleContract (Endlessly pushing caller address to stack, then popping it) -> Discussion
- ADDRESS (
0x30)- SimpleInstructionTwoContracts (Endlessly pushing account address to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- ORIGIN (
0x32)- SimpleInstructionTwoContracts (Endlessly pushing execution origination address to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- TIMESTAMP (
0x42)- SimpleInstructionTwoContracts (Endlessly pushing current block's timestamp to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- NUMBER (
0x43)- SimpleInstructionTwoContracts (Endlessly pushing current block's number to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- PREVRANDAO (
0x44)- SimpleInstructionTwoContracts (Endlessly pushing previous block's randao mix to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- GASLIMIT (
0x45)- SimpleInstructionTwoContracts (Endlessly pushing current block's gas limit to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- CHAINID (
0x46)- SimpleInstructionTwoContracts (Endlessly pushing chain ID to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- BASEFEE (
0x48)- SimpleInstructionTwoContracts (Endlessly pushing current base fee to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
- CODECOPY (
0x39): Link
Block & Chain Info
- COINBASE (
0x41)- SimpleInstructionTwoContracts (Endlessly pushing current block's coinbase to stack (1000 per 1 contract)) - refactor(benchmark): optimize the zero param opcode case #1737
Blobs
- BLOBBASEFEE - refactor(benchmark): optimize the zero param opcode case #1737
- SimpleInstructionTwoContracts (Endlessly pushing current blob base fee to stack (1000 per 1 contract))
- BLOBHASH
- SimpleInstructionTwoContracts (Endlessly pushing zero as index and BlobHash opcode to stack when there were no blobs (1000 per 1 contract)) - refactor(benchmark): refactor blobhash opcode worst case #1783
Stack & Memory
- PUSH0 (
0x5f)- SimpleInstructionSingleContract (Endlessly pushing zeros to stack, then popping it) - Discussion
- SimpleInstructionTwoContracts (Endlessly pushing zeros to stack (1000 per 1 contract)) - feat(tests): add worst case tests for PUSH opcodes #1762
- GAS (
0x5a)- SimpleInstructionSingleContract (Endlessly pushing amount of remaining gas to stack (1000 per 1 contract)) -> Discussion
- SimpleInstructionTwoContracts (Endlessly pushing amount of remaining gas to stack, then popping it) - refactor(benchmark): optimize the zero param opcode case #1737
- MSIZE (
0x59) - refactor(tests): updateMSIZEandSELFBALANCEbenchmark test #1771- MSize
- MSTORE (
0x52): Link - Done, Discussion- MStore - zero
- MStore - random
- TSTORE (
0x5c) - Done, Discussion- TStore - one storage key, repeating zero value
- TStore - one storage key, repeating constant value
- TStore - one storage key, repeating random values
- SSTORE (
0x55): Link1, Link2, Link3: Based on our discussion with Nethermind team, the sstore cases are not required to be ported at the moment.-
SStore - one storage key, repeating zero value- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - one storage key, repeating constant value- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - one storage key, repeating random values- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - one storage key, repeating two values, zero and non-zero- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - many accounts, consecutive storage keys, random values- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - many accounts, random storage keys, random values- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - many accounts, consecutive storage keys, zero values- Refactor(benchmark): optimize storage access worst case #1813 -
SStore - many accounts, random storage keys, zero values- Refactor(benchmark): optimize storage access worst case #1813
-
Control Flow
- JUMPDEST (
0x5b)- SimpleInstructionSingleContract (Block full of JumpDest opcode only) -> refactor: optimize jumpdest test case #1732
Precompiled Contracts
- EcRecover (
0x01): Link- EcRecover precompile -> Done, Discussion
- SHA-2 (
0x02) - Done, Discussion- SHA-2 precompile from 1 byte
- SHA-2 precompile from 8 bytes
- SHA-2 precompile from 32 bytes
- SHA-2 precompile from 128 bytes
- SHA-2 precompile from 1024 bytes
- SHA-2 precompile from 16k bytes
- Ripemd-160 (
0x03) - Done, Discussion- Ripemd-160 precompile from 1 byte
- Ripemd-160 precompile from 8 bytes
- Ripemd-160 precompile from 32 bytes
- Ripemd-160 precompile from 128 bytes
- Ripemd-160 precompile from 1024 bytes
- Ripemd-160 precompile from 16k bytes
- Identity (
0x04) - Done, Discussion- Identity precompile from 1 byte
- Identity precompile from 8 bytes
- Identity precompile from 32 bytes
- Identity precompile from 128 bytes
- Identity precompile from 1024 bytes
- Identity precompile from 16k bytes
- Modexp (
0x05): Link1, Link2- Modexp min gas, base heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp min gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp min gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 208 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 215 gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 298 gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp Pawel 2 - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp Pawel 3 - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp Pawel 4 - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 408 gas, base heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 400 gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 408 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 616 gas, base heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 600 gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 600 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 800 gas, base heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 800 gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 767 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 852 gas, exp heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 867 gas, base heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 996 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 1045 gas, base heavy - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 677 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 765 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp 1360 gas, balanced - test(benchmark): port nethermind modexp benchmark case #1802
- Modexp "eip_example1" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "eip_example2" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-1-square" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-1-qube" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-1-pow0x10001" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-2-square" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-2-qube" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-2-pow0x10001" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-3-square" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-3-qube" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-3-pow0x10001" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-4-square" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-4-qube" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-4-pow0x10001" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-5-square" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-5-qube" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "nagydani-5-pow0x10001" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "marius-1-even" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "guido-1-even" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "guido-2-even" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "guido-3-even" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "guido-4-even"
- Modexp "pawel-1-exp-heavy" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "pawel-2-exp-heavy" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "pawel-3-exp-heavy" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp "pawel-4-exp-heavy" - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 1360 1 - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 1360 2 - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 1349 1 - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 1152 1 - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 200 1 - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 200 2 - tests(benchmark): expand worst case modexp benchmarks #1780
- Modexp common 200 3 - tests(benchmark): expand worst case modexp benchmarks #1780
- EcAdd (
0x06): Link- EcAdd with (0, 0) - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcAdd with (1, 2) - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcAdd with 32-byte coordinates - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcMul (
0x07): Link- EcMul with (0, 0) and scalar 2 - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcMul with (0, 0) and 32-byte scalar - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcMul with (1, 2) and scalar 2 - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcMul with (1, 2) and 32-byte scalar - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcMul with 32-byte coordinates and scalar 2 - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcMul with 32-byte coordinates and 32-byte scalar - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcPairing (
0x08): Link- EcPairing with empty input - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- EcPairing with 2 sets of data - test(benchmark): add extra test case for ecAdd, ecMul and ecPairing #1799
- Blake2f (
0x09): Link- Blake2f 1 round
- Blake2f 1k rounds
- Blake2f 1M rounds
- Blake2f 10M rounds
- Point Evaluation (
0x0a): Link - Done, Discussion- Point evaluation - one data
- Secp256r1 (
0x0b): Link- Secp256r1 precompile, valid signature - feat(benchmark): add p256verify to worst compute tests #1744
Performance
Please start with the operation that has the lowest performance.
- besu - EcAddMarius1:
27.8 - besu - EmptyPayload:
28.8 - besu - EcAdd32ByteCoordinatesCACHABLE:
30.6 - besu - EcAdd12CACHABLE:
31.3 - reth - EmptyPayload:
33.4 - besu - Number:
33.4 - nethermind - EmptyPayload:
35.6 - reth - EcAddMarius1:
37.7 - besu - Keccak256From32Bytes:
38.5 - besu - EcRecoverUNCACHABLE:
40.0 - besu - Keccak256From8Bytes:
41.8 - nethermind - EcAddMarius1:
42.1 - besu - EcRecoverUNCACHABLE2:
45.3 - besu - Keccak256From1Byte:
46.2 - besu - Blake1KRoundsCACHABLE:
47.0 - besu - EcRecoverCACHABLE:
47.2 - besu - GasLimit:
49.8 - besu - Timestamp:
51.7 - besu - Origin:
52.4 - besu - Blake1MRoundsCACHABLE:
54.3 - besu - Gas:
56.0 - nethermind - EcRecoverUNCACHABLE:
56.7 - geth - EcRecoverUNCACHABLE:
56.9 - besu - MSize:
58.1 - nethermind - EcRecoverUNCACHABLE2:
58.4 - besu - Caller:
59.2 - besu - IdentityFrom1ByteCACHABLE:
59.6 - besu - PrevRandao:
59.9
danceratopz
Metadata
Metadata
Assignees
Labels
feature:zkevmtrackerTracking issue for projects with sub-tasksTracking issue for projects with sub-tasks