1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Copyright (c) 2022 MASSA LABS <info@massa.net>

//! # Overview
//!
//! This crate provides all the facilities to interact with a running execution worker (massa-execution-worker crate)
//! that is in charge of executing operations in a virtual machine,
//! and applying the effects of the execution to a ledger.
//!
//! # Usage
//!
//! When an execution worker is launched to run in a separate thread for the whole duration of the process,
//! an instance of `ExecutionManager` is returned (see the documentation of `start_execution_worker` in `massa-execution-worker`),
//! as well as an instance of `ExecutionController`.
//!
//! The non-clonable `ExecutionManager` allows stopping the execution worker thread.
//!
//! The clonable `ExecutionController` allows sending updates on the latest blockclique changes to the execution worker
//! for it to keep track of them and execute the operations present in blocks.
//! It also allows various read-only queries such as executing bytecode
//! while ignoring all the changes it would cause to the consensus state (read-only execution),
//! or reading the state at the output of the executed blockclique blocks.
//!
//! # Architecture
//!
//! ## `config.rs`
//! Contains configuration parameters for the execution system.
//!
//! ## `controller_traits.rs`
//! Defines the `ExecutionManager` and `ExecutionController` traits for interacting with the execution worker.
//!
//! ## `errors.rs`
//! Defines error types for the crate.
//!
//! ## `event_store.rs`
//! Defines an indexed, finite-size storage system for execution events.
//!
//! ## `types.rs`
//! Defines useful shared structures.
//!
//! ## Test exports
//!
//! When the crate feature `test-exports` is enabled, tooling useful for test-exports purposes is exported.
//! See `test_exports/mod.rs` for details.

#![warn(missing_docs)]
#![warn(unused_crate_dependencies)]
mod channels;
mod controller_traits;
mod error;
mod event_store;
/// mapping grpc
pub mod mapping_grpc;
mod settings;
mod types;

pub use channels::ExecutionChannels;
#[cfg(feature = "test-exports")]
pub use controller_traits::MockExecutionController;
pub use controller_traits::{ExecutionController, ExecutionManager};
pub use error::{ExecutionError, ExecutionQueryError};
pub use event_store::EventStore;
pub use massa_sc_runtime::GasCosts;
pub use settings::{ExecutionConfig, StorageCostsConstants};
pub use types::{
    ExecutedBlockInfo, ExecutionAddressInfo, ExecutionBlockMetadata, ExecutionOutput,
    ExecutionQueryCycleInfos, ExecutionQueryExecutionStatus, ExecutionQueryRequest,
    ExecutionQueryRequestItem, ExecutionQueryResponse, ExecutionQueryResponseItem,
    ExecutionQueryStakerInfo, ExecutionStackElement, ReadOnlyCallRequest, ReadOnlyExecutionOutput,
    ReadOnlyExecutionRequest, ReadOnlyExecutionTarget, SlotExecutionOutput,
};

#[cfg(any(feature = "test-exports", feature = "gas_calibration"))]
pub mod test_exports;

/// types for execution-trace / execution-info
pub mod types_trace_info;

#[cfg(feature = "execution-trace")]
pub use types_trace_info::{
    AbiTrace, SCRuntimeAbiTraceType, SCRuntimeAbiTraceValue, SlotAbiCallStack, Transfer,
};