Type Alias MainnetContext
pub type MainnetContext<DB> = Context<BlockEnv, TxEnv, CfgEnv, DB>;
Expand description
Type alias for a mainnet context with standard Ethereum environment types.
Aliased Type§
pub struct MainnetContext<DB> {
pub block: BlockEnv,
pub tx: TxEnv,
pub cfg: CfgEnv,
pub journaled_state: Journal<DB>,
pub chain: (),
pub local: LocalContext,
pub error: Result<(), ContextError<<DB as Database>::Error>>,
}
Fields§
§block: BlockEnv
Block information.
tx: TxEnv
Transaction information.
cfg: CfgEnv
Configurations.
journaled_state: Journal<DB>
EVM State with journaling support and database.
chain: ()
Inner context.
local: LocalContext
Local context that is filled by execution.
error: Result<(), ContextError<<DB as Database>::Error>>
Error that happened during execution.
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.
Implementations
§impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
CFG: Cfg,
DB: Database,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
CFG: Cfg,
DB: Database,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
pub fn with_new_journal<OJOURNAL>(
self,
journal: OJOURNAL,
) -> Context<BLOCK, TX, CFG, DB, OJOURNAL, CHAIN, LOCAL>where
OJOURNAL: JournalTr<Database = DB>,
pub fn with_new_journal<OJOURNAL>(
self,
journal: OJOURNAL,
) -> Context<BLOCK, TX, CFG, DB, OJOURNAL, CHAIN, LOCAL>where
OJOURNAL: JournalTr<Database = DB>,
Creates a new context with a new journal type. New journal needs to have the same database type.
pub fn with_db<ODB>(
self,
db: ODB,
) -> Context<BLOCK, TX, CFG, ODB, Journal<ODB>, CHAIN, LOCAL>where
ODB: Database,
pub fn with_db<ODB>(
self,
db: ODB,
) -> Context<BLOCK, TX, CFG, ODB, Journal<ODB>, CHAIN, LOCAL>where
ODB: Database,
Creates a new context with a new database type.
This will create a new Journal
object.
pub fn with_ref_db<ODB>(
self,
db: ODB,
) -> Context<BLOCK, TX, CFG, WrapDatabaseRef<ODB>, Journal<WrapDatabaseRef<ODB>>, CHAIN, LOCAL>where
ODB: DatabaseRef,
pub fn with_ref_db<ODB>(
self,
db: ODB,
) -> Context<BLOCK, TX, CFG, WrapDatabaseRef<ODB>, Journal<WrapDatabaseRef<ODB>>, CHAIN, LOCAL>where
ODB: DatabaseRef,
Creates a new context with a new DatabaseRef
type.
pub fn with_block<OB>(
self,
block: OB,
) -> Context<OB, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
OB: Block,
pub fn with_block<OB>(
self,
block: OB,
) -> Context<OB, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
OB: Block,
Creates a new context with a new block type.
pub fn with_tx<OTX>(
self,
tx: OTX,
) -> Context<BLOCK, OTX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
OTX: Transaction,
pub fn with_tx<OTX>(
self,
tx: OTX,
) -> Context<BLOCK, OTX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
OTX: Transaction,
Creates a new context with a new transaction type.
pub fn with_chain<OC>(
self,
chain: OC,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, OC, LOCAL>
pub fn with_chain<OC>( self, chain: OC, ) -> Context<BLOCK, TX, CFG, DB, JOURNAL, OC, LOCAL>
Creates a new context with a new chain type.
pub fn with_cfg<OCFG>(
self,
cfg: OCFG,
) -> Context<BLOCK, TX, OCFG, DB, JOURNAL, CHAIN, LOCAL>where
OCFG: Cfg,
pub fn with_cfg<OCFG>(
self,
cfg: OCFG,
) -> Context<BLOCK, TX, OCFG, DB, JOURNAL, CHAIN, LOCAL>where
OCFG: Cfg,
Creates a new context with a new chain type.
pub fn with_local<OL>(
self,
local: OL,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, OL>where
OL: LocalContextTr,
pub fn with_local<OL>(
self,
local: OL,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, OL>where
OL: LocalContextTr,
Creates a new context with a new local context type.
pub fn modify_cfg_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
pub fn modify_cfg_chained<F>( self, f: F, ) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
Modifies the context configuration.
pub fn modify_block_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
F: FnOnce(&mut BLOCK),
pub fn modify_block_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
F: FnOnce(&mut BLOCK),
Modifies the context block.
pub fn modify_tx_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
pub fn modify_tx_chained<F>( self, f: F, ) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
Modifies the context transaction.
pub fn modify_chain_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
F: FnOnce(&mut CHAIN),
pub fn modify_chain_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
F: FnOnce(&mut CHAIN),
Modifies the context chain.
pub fn modify_db_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
pub fn modify_db_chained<F>( self, f: F, ) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
Modifies the context database.
pub fn modify_journal_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
F: FnOnce(&mut JOURNAL),
pub fn modify_journal_chained<F>(
self,
f: F,
) -> Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
F: FnOnce(&mut JOURNAL),
Modifies the context journal.
pub fn modify_block<F>(&mut self, f: F)where
F: FnOnce(&mut BLOCK),
pub fn modify_block<F>(&mut self, f: F)where
F: FnOnce(&mut BLOCK),
Modifies the context block.
pub fn modify_cfg<F>(&mut self, f: F)
pub fn modify_cfg<F>(&mut self, f: F)
Modifies the context configuration.
pub fn modify_chain<F>(&mut self, f: F)where
F: FnOnce(&mut CHAIN),
pub fn modify_chain<F>(&mut self, f: F)where
F: FnOnce(&mut CHAIN),
Modifies the context chain.
pub fn modify_journal<F>(&mut self, f: F)where
F: FnOnce(&mut JOURNAL),
pub fn modify_journal<F>(&mut self, f: F)where
F: FnOnce(&mut JOURNAL),
Modifies the context journal.
pub fn modify_local<F>(&mut self, f: F)where
F: FnOnce(&mut LOCAL),
pub fn modify_local<F>(&mut self, f: F)where
F: FnOnce(&mut LOCAL),
Modifies the local context.
Trait Implementations
Source§impl<DB, J, C> AsEnvMut for Context<BlockEnv, TxEnv, CfgEnv, DB, J, C>
impl<DB, J, C> AsEnvMut for Context<BlockEnv, TxEnv, CfgEnv, DB, J, C>
fn as_env_mut(&mut self) -> EnvMut<'_>
§impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Clone for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Clone for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
Source§impl<DB, C> ContextExt for Context<BlockEnv, TxEnv, CfgEnv, DB, Journal<DB>, C>where
DB: Database,
impl<DB, C> ContextExt for Context<BlockEnv, TxEnv, CfgEnv, DB, Journal<DB>, C>where
DB: Database,
type DB = DB
fn as_db_env_and_journal( &mut self, ) -> (&mut <Context<BlockEnv, TxEnv, CfgEnv, DB, Journal<DB>, C> as ContextExt>::DB, &mut JournalInner<JournalEntry>, EnvMut<'_>)
§impl<BLOCK, TX, DB, CFG, JOURNAL, CHAIN, LOCAL> ContextSetters for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
DB: Database,
CFG: Cfg,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
impl<BLOCK, TX, DB, CFG, JOURNAL, CHAIN, LOCAL> ContextSetters for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
DB: Database,
CFG: Cfg,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
§impl<BLOCK, TX, DB, CFG, JOURNAL, CHAIN, LOCAL> ContextTr for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
DB: Database,
CFG: Cfg,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
impl<BLOCK, TX, DB, CFG, JOURNAL, CHAIN, LOCAL> ContextTr for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
DB: Database,
CFG: Cfg,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
§fn tx(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Tx
fn tx( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Tx
§fn block(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Block
fn block( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Block
§fn cfg(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Cfg
fn cfg( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Cfg
§fn journal(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal
fn journal( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal
§fn journal_mut(
&mut self,
) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal
fn journal_mut( &mut self, ) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal
§fn journal_ref(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal
fn journal_ref( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal
§fn db(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Db
fn db( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Db
§fn db_mut(
&mut self,
) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Db
fn db_mut( &mut self, ) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Db
§fn chain(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Chain
fn chain( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Chain
§fn chain_mut(
&mut self,
) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Chain
fn chain_mut( &mut self, ) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Chain
§fn local(
&self,
) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Local
fn local( &self, ) -> &<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Local
§fn local_mut(
&mut self,
) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Local
fn local_mut( &mut self, ) -> &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Local
§fn error(
&mut self,
) -> &mut Result<(), ContextError<<<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Db as Database>::Error>>
fn error( &mut self, ) -> &mut Result<(), ContextError<<<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Db as Database>::Error>>
§fn tx_journal_mut(
&mut self,
) -> (&<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Tx, &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal)
fn tx_journal_mut( &mut self, ) -> (&<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Tx, &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Journal)
§fn tx_local_mut(
&mut self,
) -> (&<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Tx, &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Local)
fn tx_local_mut( &mut self, ) -> (&<Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Tx, &mut <Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> as ContextTr>::Local)
§impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Debug for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Debug for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>
§impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Host for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
CFG: Cfg,
DB: Database,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
impl<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL> Host for Context<BLOCK, TX, CFG, DB, JOURNAL, CHAIN, LOCAL>where
BLOCK: Block,
TX: Transaction,
CFG: Cfg,
DB: Database,
JOURNAL: JournalTr<Database = DB>,
LOCAL: LocalContextTr,
§fn balance(&mut self, address: Address) -> Option<StateLoad<Uint<256, 4>>>
fn balance(&mut self, address: Address) -> Option<StateLoad<Uint<256, 4>>>
Gets balance of address
and if the account is cold.
§fn load_account_code(&mut self, address: Address) -> Option<StateLoad<Bytes>>
fn load_account_code(&mut self, address: Address) -> Option<StateLoad<Bytes>>
Gets code of address
and if the account is cold.
§fn load_account_code_hash(
&mut self,
address: Address,
) -> Option<StateLoad<FixedBytes<32>>>
fn load_account_code_hash( &mut self, address: Address, ) -> Option<StateLoad<FixedBytes<32>>>
Gets code hash of address
and if the account is cold.
§fn sload(
&mut self,
address: Address,
index: Uint<256, 4>,
) -> Option<StateLoad<Uint<256, 4>>>
fn sload( &mut self, address: Address, index: Uint<256, 4>, ) -> Option<StateLoad<Uint<256, 4>>>
Gets storage value of address
at index
and if the account is cold.
§fn sstore(
&mut self,
address: Address,
index: Uint<256, 4>,
value: Uint<256, 4>,
) -> Option<StateLoad<SStoreResult>>
fn sstore( &mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>, ) -> Option<StateLoad<SStoreResult>>
Sets storage value of account address at index.
Returns StateLoad
with SStoreResult
that contains original/new/old storage value.
§fn tload(&mut self, address: Address, index: Uint<256, 4>) -> Uint<256, 4>
fn tload(&mut self, address: Address, index: Uint<256, 4>) -> Uint<256, 4>
Gets the transient storage value of address
at index
.
§fn tstore(&mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>)
fn tstore(&mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>)
Sets the transient storage value of address
at index
.
§fn selfdestruct(
&mut self,
address: Address,
target: Address,
) -> Option<StateLoad<SelfDestructResult>>
fn selfdestruct( &mut self, address: Address, target: Address, ) -> Option<StateLoad<SelfDestructResult>>
Marks address
to be deleted, with funds transferred to target
.
§fn blob_gasprice(&self) -> Uint<256, 4>
fn blob_gasprice(&self) -> Uint<256, 4>
ContextTr::block().blob_gasprice()
§fn difficulty(&self) -> Uint<256, 4>
fn difficulty(&self) -> Uint<256, 4>
§fn prevrandao(&self) -> Option<Uint<256, 4>>
fn prevrandao(&self) -> Option<Uint<256, 4>>
§fn block_number(&self) -> Uint<256, 4>
fn block_number(&self) -> Uint<256, 4>
§fn beneficiary(&self) -> Address
fn beneficiary(&self) -> Address
§fn effective_gas_price(&self) -> Uint<256, 4>
fn effective_gas_price(&self) -> Uint<256, 4>
ContextTr::tx().effective_gas_price(basefee as u128)
§fn blob_hash(&self, number: usize) -> Option<Uint<256, 4>>
fn blob_hash(&self, number: usize) -> Option<Uint<256, 4>>
ContextTr::tx().blob_hash(number)
§fn max_initcode_size(&self) -> usize
fn max_initcode_size(&self) -> usize
ContextTr::cfg().max_code_size().saturating_mul(2)
§fn block_hash(&mut self, requested_number: u64) -> Option<FixedBytes<32>>
fn block_hash(&mut self, requested_number: u64) -> Option<FixedBytes<32>>
ContextTr::journal_mut().db().block_hash(number)
§fn load_account_delegated(
&mut self,
address: Address,
) -> Option<StateLoad<AccountLoad>>
fn load_account_delegated( &mut self, address: Address, ) -> Option<StateLoad<AccountLoad>>
ContextTr::journal_mut().load_account_delegated(address)