Skip to main content

sui_execution/
lib.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4// DO NOT MODIFY, Generated by ./scripts/execution-layer
5
6use std::sync::Arc;
7
8use sui_protocol_config::ProtocolConfig;
9use sui_types::{error::SuiResult, metrics::BytecodeVerifierMetrics};
10
11pub use executor::Executor;
12pub use verifier::Verifier;
13
14pub mod executor;
15pub mod verifier;
16
17mod latest;
18mod v0;
19mod v1;
20mod v2;
21mod v3;
22mod v4;
23
24#[cfg(test)]
25mod tests;
26
27pub fn executor(
28    protocol_config: &ProtocolConfig,
29    silent: bool,
30) -> SuiResult<Arc<dyn Executor + Send + Sync>> {
31    let version = protocol_config.execution_version_as_option().unwrap_or(0);
32    Ok(match version {
33        0 => Arc::new(v0::Executor::new(protocol_config, silent)?),
34
35        1 => Arc::new(v1::Executor::new(protocol_config, silent)?),
36
37        2 => Arc::new(v2::Executor::new(protocol_config, silent)?),
38
39        3 => Arc::new(v3::Executor::new(protocol_config, silent)?),
40
41        4 => Arc::new(v4::Executor::new(protocol_config, silent)?),
42
43        5 => Arc::new(latest::Executor::new(protocol_config, silent)?),
44
45        v => panic!("Unsupported execution version {v}"),
46    })
47}
48
49pub fn verifier<'m>(
50    protocol_config: &ProtocolConfig,
51    signing_limits: Option<(usize, usize, usize)>,
52    metrics: &'m Arc<BytecodeVerifierMetrics>,
53) -> Box<dyn Verifier + 'm> {
54    let version = protocol_config.execution_version_as_option().unwrap_or(0);
55    let config = protocol_config.verifier_config(signing_limits);
56    match version {
57        0 => Box::new(v0::Verifier::new(config, metrics)),
58        1 => Box::new(v1::Verifier::new(config, metrics)),
59        2 => Box::new(v2::Verifier::new(config, metrics)),
60        3 => Box::new(v3::Verifier::new(config, metrics)),
61        4 => Box::new(v4::Verifier::new(config, metrics)),
62        5 => Box::new(latest::Verifier::new(config, metrics)),
63        v => panic!("Unsupported execution version {v}"),
64    }
65}