From f774e7b073e37c7163993d5c9d8d0a77229b6e5c Mon Sep 17 00:00:00 2001 From: Dan Cline <6798349+Rjected@users.noreply.github.com> Date: Fri, 1 Nov 2024 16:53:54 -0400 Subject: [PATCH 1/2] perf(precompile): use secp256k1 global context for ecrecover --- crates/precompile/src/secp256k1.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/precompile/src/secp256k1.rs b/crates/precompile/src/secp256k1.rs index 72b5c602de..10109c2666 100644 --- a/crates/precompile/src/secp256k1.rs +++ b/crates/precompile/src/secp256k1.rs @@ -49,7 +49,7 @@ mod secp256k1 { use primitives::{alloy_primitives::B512, keccak256, B256}; use secp256k1::{ ecdsa::{RecoverableSignature, RecoveryId}, - Message, Secp256k1, + Message, SECP256K1, }; // Silence the unused crate dependency warning. @@ -59,7 +59,7 @@ mod secp256k1 { let recid = RecoveryId::from_i32(recid as i32).expect("recovery ID is valid"); let sig = RecoverableSignature::from_compact(sig.as_slice(), recid)?; - let secp = Secp256k1::new(); + let secp = &SECP256K1; let msg = Message::from_digest(msg.0); let public = secp.recover_ecdsa(&msg, &sig)?; From 86a9439b355e1b7666f68ab88de7e118e40347a6 Mon Sep 17 00:00:00 2001 From: Dan Cline <6798349+Rjected@users.noreply.github.com> Date: Fri, 1 Nov 2024 17:02:50 -0400 Subject: [PATCH 2/2] remove secp var --- crates/precompile/src/secp256k1.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/precompile/src/secp256k1.rs b/crates/precompile/src/secp256k1.rs index 10109c2666..864b43eaf3 100644 --- a/crates/precompile/src/secp256k1.rs +++ b/crates/precompile/src/secp256k1.rs @@ -59,9 +59,8 @@ mod secp256k1 { let recid = RecoveryId::from_i32(recid as i32).expect("recovery ID is valid"); let sig = RecoverableSignature::from_compact(sig.as_slice(), recid)?; - let secp = &SECP256K1; let msg = Message::from_digest(msg.0); - let public = secp.recover_ecdsa(&msg, &sig)?; + let public = SECP256K1.recover_ecdsa(&msg, &sig)?; let mut hash = keccak256(&public.serialize_uncompressed()[1..]); hash[..12].fill(0);