#[non_exhaustive]pub struct CfgEnv<SPEC = SpecId> {
pub chain_id: u64,
pub tx_chain_id_check: bool,
pub spec: SPEC,
pub limit_contract_code_size: Option<usize>,
pub limit_contract_initcode_size: Option<usize>,
pub disable_nonce_check: bool,
pub max_blobs_per_tx: Option<u64>,
pub blob_base_fee_update_fraction: Option<u64>,
pub tx_gas_limit_cap: Option<u64>,
pub disable_eip3607: bool,
}Expand description
EVM configuration
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.chain_id: u64Chain ID of the EVM. Used in CHAINID opcode and transaction’s chain ID check.
Chain ID is introduced EIP-155.
tx_chain_id_check: boolWhether to check the transaction’s chain ID.
If set to false, the transaction’s chain ID check will be skipped.
spec: SPECSpecification for EVM represent the hardfork
limit_contract_code_size: Option<usize>Contract code size limit override.
If None, the limit will be determined by the SpecId (EIP-170 or EIP-7907) at runtime. If Some, this specific limit will be used regardless of SpecId.
Useful to increase this because of tests.
limit_contract_initcode_size: Option<usize>Contract initcode size limit override.
If None, the limit will check if limit_contract_code_size is set.
If it is set, it will double it for a limit.
If it is not set, the limit will be determined by the SpecId (EIP-170 or EIP-7907) at runtime.
Useful to increase this because of tests.
disable_nonce_check: boolSkips the nonce validation against the account’s nonce
max_blobs_per_tx: Option<u64>Blob max count. EIP-7840 Add blob schedule to EL config files.
If this config is not set, the check for max blobs will be skipped.
blob_base_fee_update_fraction: Option<u64>Blob base fee update fraction. EIP-4844 Blob base fee update fraction.
If this config is not set, the blob base fee update fraction will be set to the default value. See also CfgEnv::blob_base_fee_update_fraction.
Default values for Cancun is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_CANCUN
and for Prague is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE.
tx_gas_limit_cap: Option<u64>Configures the gas limit cap for the transaction.
If None, default value defined by spec will be used.
Introduced in Osaka in EIP-7825: Transaction Gas Limit Cap with initials cap of 30M.
disable_eip3607: boolEIP-3607 rejects transactions from senders with deployed code
In development, it can be desirable to simulate calls from contracts, which this setting allows.
By default, it is set to false.
Implementations§
Source§impl<SPEC: Into<SpecId> + Copy> CfgEnv<SPEC>
impl<SPEC: Into<SpecId> + Copy> CfgEnv<SPEC>
Sourcepub fn blob_base_fee_update_fraction(&mut self) -> u64
pub fn blob_base_fee_update_fraction(&mut self) -> u64
Returns the blob base fee update fraction from CfgEnv::blob_base_fee_update_fraction.
If this field is not set, return the default value for the spec.
Default values for Cancun is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_CANCUN
and for Prague is primitives::eip4844::BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE.
Source§impl<SPEC> CfgEnv<SPEC>
impl<SPEC> CfgEnv<SPEC>
Sourcepub fn new_with_spec(spec: SPEC) -> Self
pub fn new_with_spec(spec: SPEC) -> Self
Create new CfgEnv with default values and specified spec.
Sourcepub fn with_chain_id(self, chain_id: u64) -> Self
pub fn with_chain_id(self, chain_id: u64) -> Self
Consumes self and returns a new CfgEnv with the specified chain ID.
Sourcepub fn enable_tx_chain_id_check(self) -> Self
pub fn enable_tx_chain_id_check(self) -> Self
Enables the transaction’s chain ID check.
Sourcepub fn disable_tx_chain_id_check(self) -> Self
pub fn disable_tx_chain_id_check(self) -> Self
Disables the transaction’s chain ID check.
Sourcepub fn with_spec<OSPEC: Into<SpecId>>(self, spec: OSPEC) -> CfgEnv<OSPEC>
pub fn with_spec<OSPEC: Into<SpecId>>(self, spec: OSPEC) -> CfgEnv<OSPEC>
Consumes self and returns a new CfgEnv with the specified spec.
Sourcepub fn with_max_blobs_per_tx(self, max_blobs_per_tx: u64) -> Self
pub fn with_max_blobs_per_tx(self, max_blobs_per_tx: u64) -> Self
Sets the blob target
Sourcepub fn set_max_blobs_per_tx(&mut self, max_blobs_per_tx: u64)
pub fn set_max_blobs_per_tx(&mut self, max_blobs_per_tx: u64)
Sets the blob target
Sourcepub fn clear_max_blobs_per_tx(&mut self)
pub fn clear_max_blobs_per_tx(&mut self)
Clears the blob target and max count over hardforks.
Trait Implementations§
Source§impl<SPEC: Into<SpecId> + Copy> Cfg for CfgEnv<SPEC>
impl<SPEC: Into<SpecId> + Copy> Cfg for CfgEnv<SPEC>
Source§fn is_block_gas_limit_disabled(&self) -> bool
fn is_block_gas_limit_disabled(&self) -> bool
Returns true if the block gas limit is disabled.
Source§type Spec = SPEC
type Spec = SPEC
SpecId so it can be used
by default in mainnet.Source§fn chain_id(&self) -> u64
fn chain_id(&self) -> u64
Source§fn tx_chain_id_check(&self) -> bool
fn tx_chain_id_check(&self) -> bool
Source§fn tx_gas_limit_cap(&self) -> u64
fn tx_gas_limit_cap(&self) -> u64
Source§fn max_blobs_per_tx(&self) -> Option<u64>
fn max_blobs_per_tx(&self) -> Option<u64>
Source§fn max_code_size(&self) -> usize
fn max_code_size(&self) -> usize
Source§fn max_initcode_size(&self) -> usize
fn max_initcode_size(&self) -> usize
Source§fn is_eip3541_disabled(&self) -> bool
fn is_eip3541_disabled(&self) -> bool
Source§fn is_eip3607_disabled(&self) -> bool
fn is_eip3607_disabled(&self) -> bool
Source§fn is_eip7623_disabled(&self) -> bool
fn is_eip7623_disabled(&self) -> bool
Source§fn is_balance_check_disabled(&self) -> bool
fn is_balance_check_disabled(&self) -> bool
Source§fn is_nonce_check_disabled(&self) -> bool
fn is_nonce_check_disabled(&self) -> bool
Source§fn is_base_fee_check_disabled(&self) -> bool
fn is_base_fee_check_disabled(&self) -> bool
Source§fn is_priority_fee_check_disabled(&self) -> bool
fn is_priority_fee_check_disabled(&self) -> bool
Source§fn is_fee_charge_disabled(&self) -> bool
fn is_fee_charge_disabled(&self) -> bool
Source§fn memory_limit(&self) -> u64
fn memory_limit(&self) -> u64
Source§impl<'de, SPEC> Deserialize<'de> for CfgEnv<SPEC>where
SPEC: Deserialize<'de>,
impl<'de, SPEC> Deserialize<'de> for CfgEnv<SPEC>where
SPEC: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl<SPEC: Eq> Eq for CfgEnv<SPEC>
impl<SPEC> StructuralPartialEq for CfgEnv<SPEC>
Auto Trait Implementations§
impl<SPEC> Freeze for CfgEnv<SPEC>where
SPEC: Freeze,
impl<SPEC> RefUnwindSafe for CfgEnv<SPEC>where
SPEC: RefUnwindSafe,
impl<SPEC> Send for CfgEnv<SPEC>where
SPEC: Send,
impl<SPEC> Sync for CfgEnv<SPEC>where
SPEC: Sync,
impl<SPEC> Unpin for CfgEnv<SPEC>where
SPEC: Unpin,
impl<SPEC> UnwindSafe for CfgEnv<SPEC>where
SPEC: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.