Skip to content

Latest commit

 

History

History
320 lines (171 loc) · 12.2 KB

File metadata and controls

320 lines (171 loc) · 12.2 KB

Ethrex Changelog

Perf

2025-11-11

  • Replace sha3 keccak to an assembly version using ffi #5247
  • Fix FlatKeyValue generation on fullsync mode #5274

2025-11-10

  • Disable RocksDB compression #5223

2025-11-07

  • Reuse stack pool in LEVM #5179

2025-11-05

  • Merkelization backpressure and batching #5200

2025-11-03

  • Avoid unnecessary hash validations #5167
  • Merge execution with some post-execution validations #5170

2025-10-31

  • Reduce overhead of trie opening #5145
  • Improved discovery and peer initialization #5147

2025-10-30

  • Pipeline Merkleization and Execution #5084
  • Add bloom filters to snapshot layers #5112
  • Make trusted setup warmup non blocking #5124

2025-10-28

  • Batch BlobsBundle::validate #4993
  • Remove latest_block_header lock #5050

2025-10-27

  • Run "engine_newPayload" block execution in a dedicated worker thread. #5051
  • Reusing FindNode message per lookup loop instead of randomizing the key for each message. #5047

2025-10-23

  • Move trie updates post block execution to a background thread. #4989.

2025-10-21

  • Instead of lazy computation of blocklist, do greedy computation of allowlist and store the result, fetch it with the DB. #4961

2025-10-20

  • Remove duplicate subgroup check in ecpairing precompile #4960

2025-10-17

  • Replaces incremental iteration with a one-time precompute method that scans the entire bytecode, building a BitVec<u8, Msb0> where bits mark valid JUMPDEST positions, skipping PUSH1..PUSH32 data bytes.
  • Updates is_blacklisted to O(1) bit lookup.

2025-10-14

  • Improve get_closest_nodes p2p performance #4838

2025-10-13

  • Remove explicit cache-related options from RocksDB configuration and reverted optimistic transactions to reduce RAM usage #4853
  • Remove unnecesary mul in ecpairing #4843

2025-10-06

  • Improve block headers vec handling in syncer #4771
  • Refactor current_step sync metric from a Mutex<String> to a simple atomic. #4772

2025-10-01

  • Change remaining_gas to i64, improving performance in gas cost calculations #4684

2025-09-30

  • Downloading all slots of big accounts during the initial leaves download step of snap sync #4689
  • Downloading and inserting intelligently accounts with the same state root and few (<= slots) #4689
  • Improving the performance of state trie through an ordered insertion algorithm #4689

2025-09-29

  • Remove OpcodeResult to improve tight loops of lightweight opcodes #4650

2025-09-24

  • Avoid dumping empty storage accounts to disk #4590

2025-09-22

  • Improve instruction fetching, dynamic opcode table based on configured fork, specialized push_zero in stack #4579

2025-09-17

  • Refactor bls12_g1add to use lambdaworks #4500
  • Refactor bls12_g2add to use lambdaworks #4538

2025-09-15

  • Fix caching mechanism of the latest block's hash #4479

  • Add jemalloc as an optional global allocator used by default #4301

  • Improve time when downloading bytecodes from peers #4487

2025-09-11

  • Add RocksDB as an optional storage engine #4272

2025-09-10

  • Implement fast partition of TrieIterator and use it for quickly responding GetAccountRanges and GetStorageRanges #4404

2025-09-09

  • Refactor substrate backup mechanism to avoid expensive clones #4381

2025-09-02

  • Use x86-64-v2 cpu target on linux by default, dockerfile will use it too. #4252

2025-09-01

  • Process JUMPDEST gas and pc together with the given JUMP JUMPI opcode, improving performance. #4220

2025-08-29

  • Improve P2P mempool gossip performance #4205

2025-08-28

  • Improve precompiles further: modexp, ecrecover #4168

2025-08-27

  • Improve memory resize performance #4117

2025-08-25

  • Improve calldatacopy opcode further #4150

2025-08-22

  • Improve Memory::load_range by returning a Bytes directly, avoding a vec allocation #4098

  • Improve ecpairing (bn128) precompile #4130

2025-08-20

  • Improve BLS12 precompile #4073

  • Improve blobbasefee opcode #4092

  • Make precompiles use a constant table #4097

2025-08-19

  • Improve addmod and mulmod opcode performance #4072

  • Improve signextend opcode performance #4071

  • Improve performance of calldataload, calldatacopy, extcodecopy, codecopy, returndatacopy #4070

2025-08-14

  • Use malachite crate to handle big integers in modexp, improving perfomance #4045

2025-07-31

  • Cache chain config and latest canonical block header #3878

  • Batching of transaction hashes sent in a single NewPooledTransactionHashes message #3912

  • Make JUMPDEST blacklist lazily generated on-demand #3812

  • Rewrite Blake2 AVX2 implementation (avoid gather instructions and better loop handling).

  • Add Blake2 NEON implementation.

2025-07-30

  • Add a secondary index keyed by sender+nonce to the mempool to avoid linear lookups #3865

2025-07-24

  • Refactor current callframe to avoid handling avoidable errors, improving performance #3816

  • Add shortcut to avoid callframe creation on precompile invocations #3802

2025-07-21

  • Use rayon to recover the sender address from transactions #3709

2025-07-18

  • Migrate EcAdd and EcMul to Arkworks #3719

  • Add specialized push1 and pop1 to stack #3705

  • Improve precompiles by avoiding 0 value transfers #3715

  • Improve BlobHash #3704

    Added push1 and pop1 to avoid using arrays for single variable operations.

    Avoid checking for blob hashes length twice.

2025-07-17

  • Use a lookup table for opcode execution #3669

  • Improve CodeCopy perfomance #3675

  • Improve sstore perfomance further #3657

2025-07-16

  • Improve levm memory model #3564

2025-07-15

2025-07-10

  • Add AVX256 implementation of BLAKE2 #3590

2025-07-08

  • Improve sstore opcodes #3555

2025-07-07

2025-06-30

2025-06-27

  • Reduce handle_debug runtime cost #3356
  • Improve U256 decoding and PUSHX #3332

2025-06-26

  • Refactor jump opcodes to use a blacklist on invalid targets.

2025-06-20

  • Use a lookup table for opcode parsing #3253
  • Use specialized PUSH1 and PUSH2 implementations #3262

2025-05-27

  • Improved the performance of shift instructions. 2933

  • Refactor Patricia Merkle Trie to avoid rehashing the entire path on every insert 2687

2025-05-22

  • Add immutable cache to LEVM that stores in memory data read from the Database so that getting account doesn't need to consult the Database again. 2829

2025-05-20

  • Reduce account clone overhead when account data is retrieved 2684

2025-04-30

  • Reduce transaction clone and Vec grow overhead in mempool 2637

2025-04-28

  • Make TrieDb trait use NodeHash as key 2517

2025-04-22

  • Avoid calculating state transitions after every block in bulk mode 2519

  • Transform the inlined variant of NodeHash to a constant sized array 2516

2025-04-11

  • Removed some unnecessary clones and made some functions const: 2438

  • Asyncify some DB read APIs, as well as its users #2430

2025-04-09

  • Fix an issue where the table was locked for up to 20 sec when performing a ping: 2368

2025-04-03

  • Fix a bug where RLP encoding was being done twice: #2353, check the report under docs/perf_reports for more information.

2025-04-01

  • Asyncify DB write APIs, as well as its users #2336

2025-03-30

  • Faster block import, use a slice instead of copy #2097

2025-02-28

  • Don't recompute transaction senders when building blocks #2097

2025-03-21

  • Process blocks in batches when syncing and importing #2174

2025-03-27

  • Compute tx senders in parallel #2268