From a29f10299992825f5083eafcf38b5183b3e4f33f Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Thu, 21 Sep 2023 01:15:30 +0200 Subject: [PATCH] chore: simplify get precompiles (#4681) --- .../revm/revm-inspectors/src/access_list.rs | 4 ++-- crates/rpc/rpc/src/eth/api/call.rs | 2 +- crates/rpc/rpc/src/eth/revm_utils.rs | 24 ++++--------------- 3 files changed, 7 insertions(+), 23 deletions(-) diff --git a/crates/revm/revm-inspectors/src/access_list.rs b/crates/revm/revm-inspectors/src/access_list.rs index 49b1913a43d5..60edfabb76a3 100644 --- a/crates/revm/revm-inspectors/src/access_list.rs +++ b/crates/revm/revm-inspectors/src/access_list.rs @@ -25,10 +25,10 @@ impl AccessListInspector { access_list: AccessList, from: Address, to: Address, - precompiles: Vec
, + precompiles: impl IntoIterator, ) -> Self { AccessListInspector { - excluded: [from, to].iter().chain(precompiles.iter()).copied().collect(), + excluded: [from, to].into_iter().chain(precompiles).collect(), access_list: access_list .0 .into_iter() diff --git a/crates/rpc/rpc/src/eth/api/call.rs b/crates/rpc/rpc/src/eth/api/call.rs index 246ae4050928..176fcc1daaeb 100644 --- a/crates/rpc/rpc/src/eth/api/call.rs +++ b/crates/rpc/rpc/src/eth/api/call.rs @@ -376,7 +376,7 @@ where // can consume the list since we're not using the request anymore let initial = request.access_list.take().unwrap_or_default(); - let precompiles = get_precompiles(&env.cfg.spec_id); + let precompiles = get_precompiles(env.cfg.spec_id); let mut inspector = AccessListInspector::new(initial, from, to, precompiles); let (result, _env) = inspect(&mut db, env, &mut inspector)?; diff --git a/crates/rpc/rpc/src/eth/revm_utils.rs b/crates/rpc/rpc/src/eth/revm_utils.rs index 34dba8c40ba9..b4356e5f9c27 100644 --- a/crates/rpc/rpc/src/eth/revm_utils.rs +++ b/crates/rpc/rpc/src/eth/revm_utils.rs @@ -92,26 +92,10 @@ impl FillableTransaction for TransactionSigned { } /// Returns the addresses of the precompiles corresponding to the SpecId. -pub(crate) fn get_precompiles(spec_id: &SpecId) -> Vec { - let spec = match spec_id { - SpecId::FRONTIER | SpecId::FRONTIER_THAWING => return vec![], - SpecId::HOMESTEAD | SpecId::DAO_FORK | SpecId::TANGERINE | SpecId::SPURIOUS_DRAGON => { - PrecompilesSpecId::HOMESTEAD - } - SpecId::BYZANTIUM | SpecId::CONSTANTINOPLE | SpecId::PETERSBURG => { - PrecompilesSpecId::BYZANTIUM - } - SpecId::ISTANBUL | SpecId::MUIR_GLACIER => PrecompilesSpecId::ISTANBUL, - SpecId::BERLIN | - SpecId::LONDON | - SpecId::ARROW_GLACIER | - SpecId::GRAY_GLACIER | - SpecId::MERGE | - SpecId::SHANGHAI => PrecompilesSpecId::BERLIN, - SpecId::CANCUN => PrecompilesSpecId::CANCUN, - SpecId::LATEST => PrecompilesSpecId::LATEST, - }; - Precompiles::new(spec).addresses().into_iter().map(Address::from).collect() +#[inline] +pub(crate) fn get_precompiles(spec_id: SpecId) -> impl IntoIterator { + let spec = PrecompilesSpecId::from_spec_id(spec_id); + Precompiles::new(spec).addresses().into_iter().copied().map(Address::from) } /// Executes the [Env] against the given [Database] without committing state changes.