signet_evm/
lib.rs

1#![warn(
2    missing_copy_implementations,
3    missing_debug_implementations,
4    missing_docs,
5    unreachable_pub,
6    clippy::missing_const_for_fn,
7    rustdoc::all
8)]
9#![cfg_attr(not(test), warn(unused_crate_dependencies))]
10#![deny(unused_must_use, rust_2018_idioms)]
11#![cfg_attr(docsrs, feature(doc_cfg))]
12
13//! Signet EVM
14
15#[macro_use]
16mod macros;
17
18mod types;
19pub use types::*;
20
21mod driver;
22pub use driver::SignetDriver;
23
24mod orders;
25pub use orders::{Framed, FramedFilleds, FramedOrders, OrderDetector, SignetInspector};
26
27mod outcome;
28pub use outcome::ExecutionOutcome;
29
30mod precompiles;
31pub use precompiles::signet_precompiles;
32
33mod result;
34pub use result::BlockResult;
35
36use signet_types::constants::SignetSystemConstants;
37use trevm::{
38    helpers::Ctx,
39    inspectors::Layered,
40    revm::{inspector::NoOpInspector, Database, DatabaseCommit, Inspector},
41    TrevmBuilder,
42};
43
44/// System structs and types.
45pub mod sys;
46
47/// Create a new EVM with the given database.
48pub fn signet_evm<Db: Database + DatabaseCommit>(
49    db: Db,
50    constants: SignetSystemConstants,
51) -> EvmNeedsCfg<Db> {
52    TrevmBuilder::new()
53        .with_db(db)
54        .with_insp(Layered::new(NoOpInspector, OrderDetector::for_rollup(constants)))
55        .with_precompiles(signet_precompiles())
56        .build_trevm()
57}
58
59/// Create a new EVM with the given database and inspector.
60pub fn signet_evm_with_inspector<Db, I>(
61    db: Db,
62    outer: I,
63    constants: SignetSystemConstants,
64) -> EvmNeedsCfg<Db, I>
65where
66    I: Inspector<Ctx<Db>>,
67    Db: Database + DatabaseCommit,
68{
69    let inspector = SignetLayered::new(outer, OrderDetector::for_rollup(constants));
70
71    TrevmBuilder::new()
72        .with_db(db)
73        .with_insp(inspector)
74        .with_precompiles(signet_precompiles())
75        .build_trevm()
76}