Trait fp_evm::PrecompileSet [−][src]
pub trait PrecompileSet { fn execute(
address: H160,
input: &[u8],
target_gas: Option<u64>,
context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>; }
Expand description
Custom precompiles to be used by EVM engine.
Required methods
fn execute(
address: H160,
input: &[u8],
target_gas: Option<u64>,
context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]
fn execute(
address: H160,
input: &[u8],
target_gas: Option<u64>,
context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]Try to execute the code address as precompile. If the code address is not
a precompile or the precompile is not yet available, return None
.
Otherwise, calculate the amount of gas needed with given input
and
target_gas
. Return Some(Ok(status, output, gas_used))
if the execution
is successful. Otherwise return Some(Err(_))
.
Implementations on Foreign Types
impl PrecompileSet for ()
[src]
impl PrecompileSet for ()
[src]impl<TupleElement0> PrecompileSet for (TupleElement0,) where
TupleElement0: Precompile,
[src]
impl<TupleElement0> PrecompileSet for (TupleElement0,) where
TupleElement0: Precompile,
[src]impl<TupleElement0, TupleElement1> PrecompileSet for (TupleElement0, TupleElement1) where
TupleElement0: Precompile,
TupleElement1: Precompile,
[src]
impl<TupleElement0, TupleElement1> PrecompileSet for (TupleElement0, TupleElement1) where
TupleElement0: Precompile,
TupleElement1: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
TupleElement13: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
TupleElement13: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
TupleElement13: Precompile,
TupleElement14: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
TupleElement13: Precompile,
TupleElement14: Precompile,
[src]impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
TupleElement13: Precompile,
TupleElement14: Precompile,
TupleElement15: Precompile,
[src]
impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7, TupleElement8, TupleElement9, TupleElement10, TupleElement11, TupleElement12, TupleElement13, TupleElement14, TupleElement15) where
TupleElement0: Precompile,
TupleElement1: Precompile,
TupleElement2: Precompile,
TupleElement3: Precompile,
TupleElement4: Precompile,
TupleElement5: Precompile,
TupleElement6: Precompile,
TupleElement7: Precompile,
TupleElement8: Precompile,
TupleElement9: Precompile,
TupleElement10: Precompile,
TupleElement11: Precompile,
TupleElement12: Precompile,
TupleElement13: Precompile,
TupleElement14: Precompile,
TupleElement15: Precompile,
[src]