From bfd0b373c68d0a71944ffb8ed8affa286da41573 Mon Sep 17 00:00:00 2001 From: Michael Birch Date: Wed, 27 Oct 2021 16:43:10 +0200 Subject: [PATCH] Update precompiles to London --- engine-precompiles/src/lib.rs | 41 ++++++++++++++++++++++++++++++++--- engine/src/engine.rs | 2 +- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/engine-precompiles/src/lib.rs b/engine-precompiles/src/lib.rs index 93045b1bb..a03226a2b 100644 --- a/engine-precompiles/src/lib.rs +++ b/engine-precompiles/src/lib.rs @@ -208,9 +208,44 @@ impl Precompiles { Precompiles(map) } - #[allow(dead_code)] - fn new_berlin() -> Self { - Self::new_istanbul() + pub fn new_berlin() -> Self { + let addresses = prelude::vec![ + ECRecover::ADDRESS, + SHA256::ADDRESS, + RIPEMD160::ADDRESS, + Identity::ADDRESS, + ModExp::::ADDRESS, + Bn128Add::::ADDRESS, + Bn128Mul::::ADDRESS, + Bn128Pair::::ADDRESS, + Blake2F::ADDRESS, + ExitToNear::ADDRESS, + ExitToEthereum::ADDRESS, + ]; + let fun: prelude::Vec = prelude::vec![ + ECRecover::run, + SHA256::run, + RIPEMD160::run, + Identity::run, + ModExp::::run, + Bn128Add::::run, + Bn128Mul::::run, + Bn128Pair::::run, + Blake2F::run, + ExitToNear::run, + ExitToEthereum::run, + ]; + let mut map = prelude::BTreeMap::new(); + for (address, fun) in addresses.into_iter().zip(fun) { + map.insert(address, fun); + } + + Precompiles(map) + } + + pub fn new_london() -> Self { + // no precompile changes in London HF + Self::new_berlin() } } diff --git a/engine/src/engine.rs b/engine/src/engine.rs index 96a156aca..85ae2bb16 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -265,7 +265,7 @@ struct StackExecutorParams { impl StackExecutorParams { fn new(gas_limit: u64) -> Self { Self { - precompiles: Precompiles::new_istanbul(), + precompiles: Precompiles::new_london(), gas_limit, } }