#[non_exhaustive]pub struct CfgEnv<SPEC = SpecId> {
pub chain_id: u64,
pub spec: SPEC,
pub limit_contract_code_size: Option<usize>,
pub disable_nonce_check: bool,
pub blob_target_and_max_count: Vec<(SpecId, u64, u64)>,
pub memory_limit: u64,
pub disable_balance_check: bool,
pub disable_block_gas_limit: bool,
pub disable_eip3607: bool,
pub disable_base_fee: 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
chain_id will be compared to the transaction’s Chain ID.
Chain ID is introduced EIP-155.
spec: SPECSpecification for EVM represent the hardfork
limit_contract_code_size: Option<usize>If some it will effects EIP-170: Contract code size limit.
Useful to increase this because of tests.
By default it is 0x6000 (~25kb).
disable_nonce_check: boolSkips the nonce validation against the account’s nonce
blob_target_and_max_count: Vec<(SpecId, u64, u64)>Blob target count. EIP-7840 Add blob schedule to EL config files.
Note : Items must be sorted by SpecId.
memory_limit: u64A hard memory limit in bytes beyond which OutOfGasError::Memory cannot be resized.
In cases where the gas limit may be extraordinarily high, it is recommended to set this to a sane value to prevent memory allocation panics.
Defaults to 2^32 - 1 bytes per EIP-1985.
disable_balance_check: boolSkip balance checks if true
Adds transaction cost to balance to ensure execution doesn’t fail.
By default, it is set to false.
disable_block_gas_limit: boolThere are use cases where it’s allowed to provide a gas limit that’s higher than a block’s gas limit.
To that end, you can disable the block gas limit validation.
By default, it is set to false.
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.
disable_base_fee: boolDisables base fee checks for EIP-1559 transactions
This is useful for testing method calls with zero gas price.
By default, it is set to false.
Implementations§
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 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.
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.
type Spec = SPEC
fn chain_id(&self) -> u64
fn spec(&self) -> Self::Spec
Source§fn blob_max_count(&self, spec_id: SpecId) -> u64
fn blob_max_count(&self, spec_id: SpecId) -> u64
fn max_code_size(&self) -> usize
fn is_eip3607_disabled(&self) -> bool
fn is_balance_check_disabled(&self) -> bool
fn is_nonce_check_disabled(&self) -> bool
fn is_base_fee_check_disabled(&self) -> bool
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.