Skip to content

Commit 9d5d1eb

Browse files
committed
feat: precompile
1 parent b93d78b commit 9d5d1eb

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-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: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,13 @@ 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

37+
use reth::revm::primitives::hardfork::SpecId;
3438
use signet_types::constants::SignetSystemConstants;
3539
use trevm::{
3640
helpers::Ctx,
@@ -59,6 +63,7 @@ pub fn signet_evm<Db: Database + DatabaseCommit>(
5963
TrevmBuilder::new()
6064
.with_db(db)
6165
.with_insp(Layered::new(NoOpInspector, OrderDetector::new(constants)))
66+
.with_precompiles(signet_precompiles())
6267
.build_trevm()
6368
.expect("db set")
6469
}
@@ -75,7 +80,12 @@ where
7580
{
7681
let inspector = SignetLayered::new(inner, OrderDetector::new(constants));
7782

78-
TrevmBuilder::new().with_db(db).with_insp(inspector).build_trevm().expect("db set")
83+
TrevmBuilder::new()
84+
.with_db(db)
85+
.with_insp(inspector)
86+
.with_precompiles(signet_precompiles())
87+
.build_trevm()
88+
.expect("db set")
7989
}
8090

8191
/// 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)