Trait PrecompileSet

pub trait PrecompileSet {
    // Required methods
    fn execute(
        &self,
        handle: &mut impl PrecompileHandle,
    ) -> Option<Result<PrecompileOutput, PrecompileFailure>>;
    fn is_precompile(
        &self,
        address: H160,
        remaining_gas: u64,
    ) -> IsPrecompileResult;
}
Expand description

A set of precompiles.

Checks if the provided address is in the precompile set. This should be as cheap as possible since it may be called often.

Required Methods§

fn execute( &self, handle: &mut impl PrecompileHandle, ) -> Option<Result<PrecompileOutput, PrecompileFailure>>

Tries to execute a precompile in the precompile set. If the provided address is not a precompile, returns None.

fn is_precompile(&self, address: H160, remaining_gas: u64) -> IsPrecompileResult

Check if the given address is a precompile. Should only be called to perform the check while not executing the precompile afterward, since execute already performs a check internally.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl PrecompileSet for ()

§

impl PrecompileSet for BTreeMap<H160, fn(&[u8], Option<u64>, &Context, bool) -> Result<(PrecompileOutput, u64), PrecompileFailure>>

§

fn is_precompile(&self, address: H160, _: u64) -> IsPrecompileResult

Check if the given address is a precompile. Should only be called to perform the check while not executing the precompile afterward, since execute already performs a check internally.

§

fn execute( &self, handle: &mut impl PrecompileHandle, ) -> Option<Result<PrecompileOutput, PrecompileFailure>>

Implementors§