Trait zk_evm_abstractions::vm::Precompile

source ·
pub trait Precompile: Debug {
    type CycleWitness: Clone + Debug;

    // Required method
    fn execute_precompile<M: Memory>(
        &mut self,
        monotonic_cycle_counter: u32,
        query: LogQuery,
        memory: &mut M,
    ) -> (usize, Option<(Vec<MemoryQuery>, Vec<MemoryQuery>, Vec<Self::CycleWitness>)>);
}
Expand description

Abstraction over precompile implementation. Precompile is usually a closure-forming FSM, so it must output some cycle-like witness

Required Associated Types§

Required Methods§

source

fn execute_precompile<M: Memory>( &mut self, monotonic_cycle_counter: u32, query: LogQuery, memory: &mut M, ) -> (usize, Option<(Vec<MemoryQuery>, Vec<MemoryQuery>, Vec<Self::CycleWitness>)>)

Execute a precompile by using request and access to memory. Output number of cycles needed. May be output

  • all memory reads (may be removed later on)
  • all memory writes (depending on the implementation we may directly write to memory and also remove it)
  • FSM cycle witness parameters

Object Safety§

This trait is not object safe.

Implementors§