Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions crates/context/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,4 @@ optional_priority_fee_check = []
optional_fee_charge = []
enable_eip7702 = []
enable_eip7623 = []
require_l1_data_fee_buffer = []
4 changes: 4 additions & 0 deletions crates/context/interface/src/cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ pub trait Cfg {

/// Returns whether the EIP-7623 is enabled.
fn is_eip7623_enabled(&self) -> bool;

/// Returns whether the L1 data fee buffer check is required.
/// When enabled, validates balance >= L2_fee + 2 * L1_fee but only charges L2_fee + L1_fee.
fn is_l1_data_fee_buffer_required(&self) -> bool;
}

/// What bytecode analysis to perform
Expand Down
26 changes: 26 additions & 0 deletions crates/context/src/cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ pub struct CfgEnv<SPEC = SpecId> {
/// By default, it is set to `false`.
#[cfg(feature = "enable_eip7623")]
pub enable_eip7623: bool,
/// Requires L1 data fee buffer in balance check.
/// When enabled, validates balance >= L2_fee + 2 * L1_fee but only charges L2_fee + L1_fee.
/// By default, it is set to `false`.
#[cfg(feature = "require_l1_data_fee_buffer")]
pub require_l1_data_fee_buffer: bool,
}

impl CfgEnv {
Expand Down Expand Up @@ -191,6 +196,8 @@ impl<SPEC> CfgEnv<SPEC> {
enable_eip7702: false,
#[cfg(feature = "enable_eip7623")]
enable_eip7623: false,
#[cfg(feature = "require_l1_data_fee_buffer")]
require_l1_data_fee_buffer: false,
}
}

Expand Down Expand Up @@ -246,6 +253,8 @@ impl<SPEC> CfgEnv<SPEC> {
enable_eip7702: self.enable_eip7702,
#[cfg(feature = "enable_eip7623")]
enable_eip7623: self.enable_eip7623,
#[cfg(feature = "require_l1_data_fee_buffer")]
require_l1_data_fee_buffer: self.require_l1_data_fee_buffer,
}
}

Expand Down Expand Up @@ -299,6 +308,13 @@ impl<SPEC> CfgEnv<SPEC> {
self.enable_eip7623 = true;
self
}

/// Sets the require L1 data fee buffer flag.
#[cfg(feature = "require_l1_data_fee_buffer")]
pub fn with_require_l1_data_fee_buffer(mut self, require: bool) -> Self {
self.require_l1_data_fee_buffer = require;
self
}
}

impl<SPEC: Into<SpecId> + Copy> Cfg for CfgEnv<SPEC> {
Expand Down Expand Up @@ -452,6 +468,16 @@ impl<SPEC: Into<SpecId> + Copy> Cfg for CfgEnv<SPEC> {
}
}
}

fn is_l1_data_fee_buffer_required(&self) -> bool {
cfg_if::cfg_if! {
if #[cfg(feature = "require_l1_data_fee_buffer")] {
self.require_l1_data_fee_buffer
} else {
false
}
}
}
}

impl<SPEC: Default> Default for CfgEnv<SPEC> {
Expand Down
1 change: 1 addition & 0 deletions crates/revm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ optional_no_base_fee = ["context/optional_no_base_fee"]
optional_fee_charge = ["context/optional_fee_charge"]
enable_eip7702 = ["context/enable_eip7702"]
enable_eip7623 = ["context/enable_eip7623"]
require_l1_data_fee_buffer = ["context/require_l1_data_fee_buffer"]

# Precompiles features: Please look at the comments in `precompile` crate for more information.

Expand Down