1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
use primitive_types::{H160, H256, U256};
/// Create scheme.
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub enum CreateScheme {
/// Legacy create scheme of `CREATE`.
Legacy {
/// Caller of the create.
caller: H160,
},
/// Create scheme of `CREATE2`.
Create2 {
/// Caller of the create.
caller: H160,
/// Code hash.
code_hash: H256,
/// Salt.
salt: H256,
},
/// Create at a fixed location.
Fixed(H160),
}
/// Call scheme.
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub enum CallScheme {
/// `CALL`
Call,
/// `CALLCODE`
CallCode,
/// `DELEGATECALL`
DelegateCall,
/// `STATICCALL`
StaticCall,
}
/// Context of the runtime.
#[derive(Clone, Debug)]
pub struct Context {
/// Execution address.
pub address: H160,
/// Caller of the EVM.
pub caller: H160,
/// Apparent value of the EVM.
pub apparent_value: U256,
}