pub struct ConsensusExecutor {
pub handler: Arc<ConsensusExecutionHandler>,
/* private fields */
}
Expand description
ConsensusExecutor processes transaction execution tasks.
Fields§
§handler: Arc<ConsensusExecutionHandler>
The handler to provide functions to handle ExecutionTask
and execute
transactions It is used both asynchronously by self.thread
and
synchronously by the executor itself
Implementations§
source§impl ConsensusExecutor
impl ConsensusExecutor
pub fn start( tx_pool: SharedTransactionPool, data_man: Arc<BlockDataManager>, consensus_inner: Arc<RwLock<ConsensusGraphInner>>, config: ConsensusExecutionConfiguration, verification_config: VerificationConfig, bench_mode: bool, pos_verifier: Arc<PosVerifier> ) -> Arc<Self>
sourcepub fn wait_for_result(
&self,
epoch_hash: H256
) -> Result<EpochExecutionCommitment, String>
pub fn wait_for_result( &self, epoch_hash: H256 ) -> Result<EpochExecutionCommitment, String>
Wait until all tasks currently in the queue to be executed and return
(state_root, receipts_root, logs_bloom_hash)
of the given
epoch_hash
.
It is the caller’s responsibility to ensure that epoch_hash
is indeed
computed when all the tasks before are finished.
pub fn get_reward_execution_info_from_index( &self, inner: &mut ConsensusGraphInner, reward_index: Option<(usize, usize)> ) -> Option<RewardExecutionInfo>
pub fn get_reward_execution_info( &self, inner: &mut ConsensusGraphInner, epoch_arena_index: usize ) -> Option<RewardExecutionInfo>
pub fn get_blame_and_deferred_state_for_generation( &self, parent_block_hash: &H256, inner_lock: &RwLock<ConsensusGraphInner> ) -> Result<StateBlameInfo, String>
sourcepub fn enqueue_epoch(&self, task: EpochExecutionTask) -> bool
pub fn enqueue_epoch(&self, task: EpochExecutionTask) -> bool
Enqueue the epoch to be executed by the background execution thread The parameters are needed for the thread to execute this epoch without holding inner lock.
sourcepub fn compute_epoch(
&self,
task: EpochExecutionTask,
debug_record: Option<&mut ComputeEpochDebugRecord>,
recover_mpt_during_construct_pivot_state: bool
)
pub fn compute_epoch( &self, task: EpochExecutionTask, debug_record: Option<&mut ComputeEpochDebugRecord>, recover_mpt_during_construct_pivot_state: bool )
Execute the epoch synchronously
pub fn epoch_executed_and_recovered( &self, epoch_hash: &H256, epoch_block_hashes: &Vec<H256>, on_local_pivot: bool, reward_execution_info: &Option<RewardExecutionInfo>, epoch_height: u64 ) -> bool
pub fn call_virtual( &self, tx: &SignedTransaction, epoch_id: &H256, epoch_size: usize, request: EstimateRequest, evm_overrides: EvmOverrides ) -> CoreResult<(ExecutionOutcome, EstimateExt)>
pub fn collect_blocks_geth_trace( &self, epoch_id: H256, epoch_num: u64, blocks: &Vec<Arc<Block>>, opts: GethDebugTracingOptions, tx_hash: Option<H256> ) -> CoreResult<Vec<GethTraceWithHash>>
pub fn stop(&self)
sourcepub fn compute_state_for_block(
&self,
block_hash: &H256,
inner: &mut ConsensusGraphInner
) -> Result<(), String>
pub fn compute_state_for_block( &self, block_hash: &H256, inner: &mut ConsensusGraphInner ) -> Result<(), String>
This is a blocking call to force the execution engine to compute the state of a block immediately
Auto Trait Implementations§
impl !RefUnwindSafe for ConsensusExecutor
impl Send for ConsensusExecutor
impl Sync for ConsensusExecutor
impl Unpin for ConsensusExecutor
impl !UnwindSafe for ConsensusExecutor
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
source§impl<T> ElementSatisfy<ElementNoConstrain> for T
impl<T> ElementSatisfy<ElementNoConstrain> for T
fn to_constrain_object(&self) -> &ElementNoConstrain
fn to_constrain_object_mut(&mut self) -> &mut ElementNoConstrain
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.