diff --git a/CHANGELOG.md b/CHANGELOG.md index 93f9ffa0c92..0cfd5c716c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### 2025-11-12 +- Avoid copying while reading account code [#5289](https://github.com/lambdaclass/ethrex/pull/5289) - Cache `BLOBBASEFEE` opcode value [#5288](https://github.com/lambdaclass/ethrex/pull/5288) ### 2025-11-11 diff --git a/crates/storage/store_db/rocksdb.rs b/crates/storage/store_db/rocksdb.rs index 35c0b9cec39..a24298b4560 100644 --- a/crates/storage/store_db/rocksdb.rs +++ b/crates/storage/store_db/rocksdb.rs @@ -1306,11 +1306,14 @@ impl StoreEngine for Store { } fn get_account_code(&self, code_hash: H256) -> Result, StoreError> { - let hash_key = code_hash.as_bytes().to_vec(); - let Some(bytes) = self.read_sync(CF_ACCOUNT_CODES, hash_key)? else { + let cf = self.cf_handle(CF_ACCOUNT_CODES)?; + let Some(bytes) = self + .db + .get_pinned_cf(&cf, code_hash.as_bytes()) + .map_err(|e| StoreError::Custom(format!("RocksDB read error: {}", e)))? + else { return Ok(None); }; - let bytes = Bytes::from_owner(bytes); let (bytecode, targets) = decode_bytes(&bytes)?; let code = Code { hash: code_hash,