Trait PrecompileProvider
pub trait PrecompileProvider<CTX>where
CTX: ContextTr,{
type Output;
// Required methods
fn set_spec(&mut self, spec: <<CTX as ContextTr>::Cfg as Cfg>::Spec) -> bool;
fn run(
&mut self,
context: &mut CTX,
inputs: &CallInputs,
) -> Result<Option<Self::Output>, String>;
fn warm_addresses(&self) -> &HashSet<Address, FbBuildHasher<20>>;
// Provided method
fn contains(&self, address: &Address) -> bool { ... }
}Expand description
Provider for precompiled contracts in the EVM.
Required Associated Types§
type Output
type Output
The output type returned by precompile execution.
Required Methods§
fn set_spec(&mut self, spec: <<CTX as ContextTr>::Cfg as Cfg>::Spec) -> bool
fn set_spec(&mut self, spec: <<CTX as ContextTr>::Cfg as Cfg>::Spec) -> bool
Sets the spec id and returns true if the spec id was changed. Initial call to set_spec will always return true.
Returns true if precompile addresses should be injected into the journal.
fn run(
&mut self,
context: &mut CTX,
inputs: &CallInputs,
) -> Result<Option<Self::Output>, String>
fn run( &mut self, context: &mut CTX, inputs: &CallInputs, ) -> Result<Option<Self::Output>, String>
Run the precompile.
fn warm_addresses(&self) -> &HashSet<Address, FbBuildHasher<20>>
fn warm_addresses(&self) -> &HashSet<Address, FbBuildHasher<20>>
Get the warm addresses.
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".