Skip to content

Commit 9ac32b9

Browse files
committed
feat: precompile
1 parent d91b203 commit 9ac32b9

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,
@@ -51,6 +55,7 @@ pub fn signet_evm<Db: Database + DatabaseCommit>(
5155
TrevmBuilder::new()
5256
.with_db(db)
5357
.with_insp(Layered::new(NoOpInspector, OrderDetector::new(constants)))
58+
.with_precompiles(signet_precompiles())
5459
.build_trevm()
5560
.expect("db set")
5661
}
@@ -67,7 +72,12 @@ where
6772
{
6873
let inspector = SignetLayered::new(inner, OrderDetector::new(constants));
6974

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

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