Skip to content

Commit 18ffaa4

Browse files
authored
feat: precompile (#58)
* feat: precompile * lint: clippy
1 parent bd183b6 commit 18ffaa4

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

crates/evm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ repository.workspace = true
1212
signet-extract.workspace = true
1313
signet-types.workspace = true
1414

15-
trevm.workspace = true
15+
trevm = { workspace = true, features = ["secp256r1"] }
1616
signet-zenith.workspace = true
1717

1818
alloy.workspace = true

crates/evm/src/lib.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ pub use journal::HostJournal;
2828
mod orders;
2929
pub use orders::{Framed, FramedFilleds, FramedOrders, OrderDetector, SignetInspector};
3030

31+
mod precompiles;
32+
pub use precompiles::signet_precompiles;
33+
3134
mod result;
3235
pub use result::BlockResult;
3336

@@ -51,6 +54,7 @@ pub fn signet_evm<Db: Database + DatabaseCommit>(
5154
TrevmBuilder::new()
5255
.with_db(db)
5356
.with_insp(Layered::new(NoOpInspector, OrderDetector::new(constants)))
57+
.with_precompiles(signet_precompiles())
5458
.build_trevm()
5559
.expect("db set")
5660
}
@@ -67,7 +71,12 @@ where
6771
{
6872
let inspector = SignetLayered::new(inner, OrderDetector::new(constants));
6973

70-
TrevmBuilder::new().with_db(db).with_insp(inspector).build_trevm().expect("db set")
74+
TrevmBuilder::new()
75+
.with_db(db)
76+
.with_insp(inspector)
77+
.with_precompiles(signet_precompiles())
78+
.build_trevm()
79+
.expect("db set")
7180
}
7281

7382
/// Test utilities for the Signet EVM impl.

crates/evm/src/precompiles.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use reth::revm::precompile::{secp256r1, Precompiles};
2+
use std::sync::OnceLock;
3+
4+
static PRECOMPILES: OnceLock<Precompiles> = OnceLock::new();
5+
6+
/// Create a set of precompiles for the Signet EVM.
7+
pub fn signet_precompiles() -> &'static Precompiles {
8+
PRECOMPILES.get_or_init(|| {
9+
let mut precompiles = Precompiles::prague().clone();
10+
11+
precompiles.extend([secp256r1::P256VERIFY]);
12+
13+
precompiles
14+
})
15+
}

0 commit comments

Comments
 (0)