Skip to content

Issue tracker for porting Nethermind tests #1734

Open
@LouisTsai-Csie

Description

@LouisTsai-Csie

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

Opcode

Arithmetic

Cryptographic

  • KECCAK256 (0x20): Link - Done, Discussion
    • Keccak256 from 1 byte
    • Keccak256 from 8 bytes
    • Keccak256 from 32 bytes

Stateful Opcodes

Termination

Environment

Block & Chain Info

Blobs

  • BLOBBASEFEE - refactor(zkevm): 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))

Stack & Memory

  • PUSH0 (0x5f)
  • GAS (0x5a)
  • MSIZE (0x59) - refactor(tests): update MSIZE and SELFBALANCE benchmark 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.
    • SStore - one storage key, repeating zero value
    • SStore - one storage key, repeating constant value
    • SStore - one storage key, repeating random values
    • SStore - one storage key, repeating two values, zero and non-zero
    • SStore - many accounts, consecutive storage keys, random values
    • SStore - many accounts, random storage keys, random values
    • SStore - many accounts, consecutive storage keys, zero values
    • SStore - many accounts, random storage keys, zero values

Control Flow

Precompiled Contracts

  • EcRecover (0x01): Link
  • 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
    • Modexp min gas, exp heavy
    • Modexp min gas, balanced
    • Modexp 208 gas, balanced
    • Modexp 215 gas, exp heavy
    • Modexp 298 gas, exp heavy
    • Modexp Pawel 2
    • Modexp Pawel 3
    • Modexp Pawel 4
    • Modexp 408 gas, base heavy
    • Modexp 400 gas, exp heavy
    • Modexp 408 gas, balanced
    • Modexp 616 gas, base heavy
    • Modexp 600 gas, exp heavy
    • Modexp 600 gas, balanced
    • Modexp 800 gas, base heavy
    • Modexp 800 gas, exp heavy
    • Modexp 767 gas, balanced
    • Modexp 852 gas, exp heavy
    • Modexp 867 gas, base heavy
    • Modexp 996 gas, balanced
    • Modexp 1045 gas, base heavy
    • Modexp 677 gas, balanced
    • Modexp 765 gas, balanced
    • Modexp 1360 gas, balanced
    • Modexp "eip_example1"
    • Modexp "eip_example2"
    • Modexp "nagydani-1-square"
    • Modexp "nagydani-1-qube"
    • Modexp "nagydani-1-pow0x10001"
    • Modexp "nagydani-2-square"
    • Modexp "nagydani-2-qube"
    • Modexp "nagydani-2-pow0x10001"
    • Modexp "nagydani-3-square"
    • Modexp "nagydani-3-qube"
    • Modexp "nagydani-3-pow0x10001"
    • Modexp "nagydani-4-square"
    • Modexp "nagydani-4-qube"
    • Modexp "nagydani-4-pow0x10001"
    • Modexp "nagydani-5-square"
    • Modexp "nagydani-5-qube"
    • Modexp "nagydani-5-pow0x10001"
    • Modexp "marius-1-even"
    • Modexp "guido-1-even"
    • Modexp "guido-2-even"
    • Modexp "guido-3-even"
    • Modexp "guido-4-even"
    • Modexp "pawel-1-exp-heavy"
    • Modexp "pawel-2-exp-heavy"
    • Modexp "pawel-3-exp-heavy"
    • Modexp "pawel-4-exp-heavy"
    • Modexp common 1360 1
    • Modexp common 1360 2
    • Modexp common 1349 1
    • Modexp common 1152 1
    • Modexp common 200 1
    • Modexp common 200 2
    • Modexp common 200 3
  • EcAdd (0x06): Link
    • EcAdd with (0, 0)
    • EcAdd with (1, 2)
    • EcAdd with 32-byte coordinates
  • EcMul (0x07): Link
    • EcMul with (0, 0) and scalar 2
    • EcMul with (0, 0) and 32-byte scalar
    • EcMul with (1, 2) and scalar 2
    • EcMul with (1, 2) and 32-byte scalar
    • EcMul with 32-byte coordinates and scalar 2
    • EcMul with 32-byte coordinates and 32-byte scalar
  • EcPairing (0x08): Link
    • EcPairing with empty input
    • EcPairing with 2 sets of data
  • 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

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

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions