From 89f01cb4e0707fd0c14867441f2f23919ca448cf Mon Sep 17 00:00:00 2001 From: Elijah Hampton Date: Thu, 23 Jan 2025 12:33:54 -0500 Subject: [PATCH 1/4] Includes address and version bytes for codecopy --- crates/primitives/src/lib.rs | 2 +- crates/revm/src/context/inner_evm_context.rs | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs index 8b1b11e1e1..a2538f9a9a 100644 --- a/crates/primitives/src/lib.rs +++ b/crates/primitives/src/lib.rs @@ -32,7 +32,7 @@ pub use constants::*; pub use eip7702::{ Authorization, AuthorizationList, Eip7702Bytecode, Eip7702DecodeError, PrimitiveSignature, RecoveredAuthority, RecoveredAuthorization, SignedAuthorization, EIP7702_MAGIC, - EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, + EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, EIP7702_VERSION, }; pub use env::*; diff --git a/crates/revm/src/context/inner_evm_context.rs b/crates/revm/src/context/inner_evm_context.rs index cdeda759ae..e787d35006 100644 --- a/crates/revm/src/context/inner_evm_context.rs +++ b/crates/revm/src/context/inner_evm_context.rs @@ -9,7 +9,8 @@ use crate::{ AccessListItem, Account, Address, AnalysisKind, Bytecode, Bytes, CfgEnv, EVMError, Env, Eof, HashSet, Spec, SpecId::{self, *}, - B256, EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, EOF_MAGIC_BYTES, EOF_MAGIC_HASH, U256, + B256, EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, EIP7702_VERSION, EOF_MAGIC_BYTES, + EOF_MAGIC_HASH, U256, }, JournalCheckpoint, }; @@ -183,7 +184,13 @@ impl InnerEvmContext { let code = if code.is_eof() { EOF_MAGIC_BYTES.clone() } else if code.is_eip7702() { - EIP7702_MAGIC_BYTES.clone() + // Reserve 23 bytes for EIP7702_MAGIC_BYTES (2 bytes) + EIP7702_VERSION (1 byte) + // + address (20 bytes) + let mut bytes = Vec::with_capacity(23); + bytes.extend_from_slice(&EIP7702_MAGIC_BYTES); + bytes.push(EIP7702_VERSION); + bytes.extend_from_slice(address.as_slice()); + bytes.into() } else { code.original_bytes() }; From a8ff2051e52b99fc7d2a7f607ada0785f517c741 Mon Sep 17 00:00:00 2001 From: Elijah Hampton Date: Thu, 23 Jan 2025 12:41:54 -0500 Subject: [PATCH 2/4] fix cargo check, undeclared Vec type --- crates/revm/src/context/inner_evm_context.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/revm/src/context/inner_evm_context.rs b/crates/revm/src/context/inner_evm_context.rs index e787d35006..cefd459ae2 100644 --- a/crates/revm/src/context/inner_evm_context.rs +++ b/crates/revm/src/context/inner_evm_context.rs @@ -14,7 +14,7 @@ use crate::{ }, JournalCheckpoint, }; -use std::{boxed::Box, sync::Arc}; +use std::{boxed::Box, sync::Arc, vec::Vec}; /// EVM contexts contains data that EVM needs for execution. #[derive(Debug)] From f09f3c5c0c423740d9e601e0bd43fe965fb28f15 Mon Sep 17 00:00:00 2001 From: Elijah Hampton Date: Sun, 26 Jan 2025 15:37:48 -0500 Subject: [PATCH 3/4] simplify EXTCODECOPY to return original bytes including address, EXTCODEHASH as well --- crates/revm/src/context/inner_evm_context.rs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/crates/revm/src/context/inner_evm_context.rs b/crates/revm/src/context/inner_evm_context.rs index cefd459ae2..d08c1473a2 100644 --- a/crates/revm/src/context/inner_evm_context.rs +++ b/crates/revm/src/context/inner_evm_context.rs @@ -183,14 +183,6 @@ impl InnerEvmContext { let code = if code.is_eof() { EOF_MAGIC_BYTES.clone() - } else if code.is_eip7702() { - // Reserve 23 bytes for EIP7702_MAGIC_BYTES (2 bytes) + EIP7702_VERSION (1 byte) - // + address (20 bytes) - let mut bytes = Vec::with_capacity(23); - bytes.extend_from_slice(&EIP7702_MAGIC_BYTES); - bytes.push(EIP7702_VERSION); - bytes.extend_from_slice(address.as_slice()); - bytes.into() } else { code.original_bytes() }; @@ -213,8 +205,6 @@ impl InnerEvmContext { let hash = if code.is_eof() { EOF_MAGIC_HASH - } else if code.is_eip7702() { - EIP7702_MAGIC_HASH } else { acc.info.code_hash }; From 77b3180fa9a4e67c93419baea17858eaf99770c1 Mon Sep 17 00:00:00 2001 From: Elijah Hampton Date: Sun, 26 Jan 2025 15:41:34 -0500 Subject: [PATCH 4/4] Remove added EIP7702_VERSION export. fmt, clippy, check --- crates/primitives/src/lib.rs | 2 +- crates/revm/src/context/inner_evm_context.rs | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs index a2538f9a9a..8b1b11e1e1 100644 --- a/crates/primitives/src/lib.rs +++ b/crates/primitives/src/lib.rs @@ -32,7 +32,7 @@ pub use constants::*; pub use eip7702::{ Authorization, AuthorizationList, Eip7702Bytecode, Eip7702DecodeError, PrimitiveSignature, RecoveredAuthority, RecoveredAuthorization, SignedAuthorization, EIP7702_MAGIC, - EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, EIP7702_VERSION, + EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, }; pub use env::*; diff --git a/crates/revm/src/context/inner_evm_context.rs b/crates/revm/src/context/inner_evm_context.rs index d08c1473a2..d61e758f69 100644 --- a/crates/revm/src/context/inner_evm_context.rs +++ b/crates/revm/src/context/inner_evm_context.rs @@ -9,12 +9,11 @@ use crate::{ AccessListItem, Account, Address, AnalysisKind, Bytecode, Bytes, CfgEnv, EVMError, Env, Eof, HashSet, Spec, SpecId::{self, *}, - B256, EIP7702_MAGIC_BYTES, EIP7702_MAGIC_HASH, EIP7702_VERSION, EOF_MAGIC_BYTES, - EOF_MAGIC_HASH, U256, + B256, EOF_MAGIC_BYTES, EOF_MAGIC_HASH, U256, }, JournalCheckpoint, }; -use std::{boxed::Box, sync::Arc, vec::Vec}; +use std::{boxed::Box, sync::Arc}; /// EVM contexts contains data that EVM needs for execution. #[derive(Debug)]