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]

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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]

impl<TupleElement0> PrecompileSet for (TupleElement0,) where
    TupleElement0: Precompile
[src]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]

impl<TupleElement0, TupleElement1> PrecompileSet for (TupleElement0, TupleElement1) where
    TupleElement0: Precompile,
    TupleElement1: Precompile
[src]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]

impl<TupleElement0, TupleElement1, TupleElement2> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2) where
    TupleElement0: Precompile,
    TupleElement1: Precompile,
    TupleElement2: Precompile
[src]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]

impl<TupleElement0, TupleElement1, TupleElement2, TupleElement3> PrecompileSet for (TupleElement0, TupleElement1, TupleElement2, TupleElement3) where
    TupleElement0: Precompile,
    TupleElement1: Precompile,
    TupleElement2: Precompile,
    TupleElement3: Precompile
[src]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[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]

fn execute(
    address: H160,
    input: &[u8],
    target_gas: Option<u64>,
    context: &Context
) -> Option<Result<PrecompileOutput, ExitError>>
[src]

Implementors