pub struct GasParams { /* private fields */ }Expand description
Gas table for dynamic gas constants.
Implementations§
Source§impl GasParams
impl GasParams
Sourcepub fn override_gas(&mut self, values: impl IntoIterator<Item = (GasId, u64)>)
pub fn override_gas(&mut self, values: impl IntoIterator<Item = (GasId, u64)>)
Overrides the gas cost for the given gas id.
It will clone underlying table and override the values.
Use to override default gas cost
use revm_interpreter::gas::params::{GasParams, GasId};
use primitives::hardfork::SpecId;
let mut gas_table = GasParams::new_spec(SpecId::default());
gas_table.override_gas([(GasId::memory_linear_cost(), 2), (GasId::memory_quadratic_reduction(), 512)].into_iter());
assert_eq!(gas_table.get(GasId::memory_linear_cost()), 2);
assert_eq!(gas_table.get(GasId::memory_quadratic_reduction()), 512);Sourcepub fn selfdestruct_refund(&self) -> i64
pub fn selfdestruct_refund(&self) -> i64
Selfdestruct refund.
Sourcepub fn selfdestruct_cost(&self, should_charge_topup: bool, is_cold: bool) -> u64
pub fn selfdestruct_cost(&self, should_charge_topup: bool, is_cold: bool) -> u64
Selfdestruct cost.
Sourcepub fn extcodecopy(&self, len: usize) -> u64
pub fn extcodecopy(&self, len: usize) -> u64
EXTCODECOPY gas cost
Sourcepub fn mcopy_cost(&self, len: usize) -> u64
pub fn mcopy_cost(&self, len: usize) -> u64
MCOPY gas cost
Sourcepub fn sstore_static_gas(&self) -> u64
pub fn sstore_static_gas(&self) -> u64
Static gas cost for SSTORE opcode
Sourcepub fn sstore_set_without_load_cost(&self) -> u64
pub fn sstore_set_without_load_cost(&self) -> u64
SSTORE set cost
Sourcepub fn sstore_reset_without_cold_load_cost(&self) -> u64
pub fn sstore_reset_without_cold_load_cost(&self) -> u64
SSTORE reset cost
Sourcepub fn sstore_clearing_slot_refund(&self) -> u64
pub fn sstore_clearing_slot_refund(&self) -> u64
SSTORE clearing slot refund
Sourcepub fn sstore_dynamic_gas(
&self,
is_istanbul: bool,
vals: &SStoreResult,
is_cold: bool,
) -> u64
pub fn sstore_dynamic_gas( &self, is_istanbul: bool, vals: &SStoreResult, is_cold: bool, ) -> u64
Dynamic gas cost for SSTORE opcode.
Dynamic gas cost is gas that needs input from SSTORE operation to be calculated.
Sourcepub fn sstore_refund(&self, is_istanbul: bool, vals: &SStoreResult) -> i64
pub fn sstore_refund(&self, is_istanbul: bool, vals: &SStoreResult) -> i64
SSTORE refund calculation.
Sourcepub fn keccak256_cost(&self, len: usize) -> u64
pub fn keccak256_cost(&self, len: usize) -> u64
KECCAK256 gas cost per word
Sourcepub fn memory_cost(&self, len: usize) -> u64
pub fn memory_cost(&self, len: usize) -> u64
Memory gas cost
Sourcepub fn initcode_cost(&self, len: usize) -> u64
pub fn initcode_cost(&self, len: usize) -> u64
Initcode word cost
Sourcepub fn create_cost(&self) -> u64
pub fn create_cost(&self) -> u64
Create gas cost
Sourcepub fn create2_cost(&self, len: usize) -> u64
pub fn create2_cost(&self, len: usize) -> u64
Create2 gas cost.
Sourcepub fn call_stipend(&self) -> u64
pub fn call_stipend(&self) -> u64
Call stipend.
Sourcepub fn call_stipend_reduction(&self, gas_limit: u64) -> u64
pub fn call_stipend_reduction(&self, gas_limit: u64) -> u64
Call stipend reduction. Call stipend is reduced by 1/64 of the gas limit.
Sourcepub fn transfer_value_cost(&self) -> u64
pub fn transfer_value_cost(&self) -> u64
Transfer value cost
Sourcepub fn cold_account_additional_cost(&self) -> u64
pub fn cold_account_additional_cost(&self) -> u64
Additional cold cost. Additional cold cost is added to the gas cost if the account is cold loaded.
Sourcepub fn cold_storage_additional_cost(&self) -> u64
pub fn cold_storage_additional_cost(&self) -> u64
Cold storage additional cost.
Sourcepub fn cold_storage_cost(&self) -> u64
pub fn cold_storage_cost(&self) -> u64
Cold storage cost.
Sourcepub fn new_account_cost(
&self,
is_spurious_dragon: bool,
transfers_value: bool,
) -> u64
pub fn new_account_cost( &self, is_spurious_dragon: bool, transfers_value: bool, ) -> u64
New account cost. New account cost is added to the gas cost if the account is empty.
Sourcepub fn new_account_cost_for_selfdestruct(&self) -> u64
pub fn new_account_cost_for_selfdestruct(&self) -> u64
New account cost for selfdestruct.
Sourcepub fn warm_storage_read_cost(&self) -> u64
pub fn warm_storage_read_cost(&self) -> u64
Warm storage read cost. Warm storage read cost is added to the gas cost if the account is warm loaded.
Sourcepub fn copy_per_word_cost(&self, word_num: usize) -> u64
pub fn copy_per_word_cost(&self, word_num: usize) -> u64
Copy per word cost
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GasParams
impl<'de> Deserialize<'de> for GasParams
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 Eq for GasParams
impl StructuralPartialEq for GasParams
Auto Trait Implementations§
impl Freeze for GasParams
impl RefUnwindSafe for GasParams
impl !Send for GasParams
impl !Sync for GasParams
impl Unpin for GasParams
impl UnwindSafe for GasParams
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)§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.