diff --git a/Cargo.lock b/Cargo.lock index 6744f00791..213faf1a05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3606,7 +3606,7 @@ dependencies = [ [[package]] name = "evm" version = "0.39.1" -source = "git+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65" +source = "git+https://github.com/rust-blockchain/evm?rev=44bb77c27be9ee615eaa576ad914fbb461537276#44bb77c27be9ee615eaa576ad914fbb461537276" dependencies = [ "auto_impl", "environmental", @@ -3626,7 +3626,7 @@ dependencies = [ [[package]] name = "evm-core" version = "0.39.0" -source = "git+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65" +source = "git+https://github.com/rust-blockchain/evm?rev=44bb77c27be9ee615eaa576ad914fbb461537276#44bb77c27be9ee615eaa576ad914fbb461537276" dependencies = [ "parity-scale-codec", "primitive-types", @@ -3637,7 +3637,7 @@ dependencies = [ [[package]] name = "evm-gasometer" version = "0.39.0" -source = "git+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65" +source = "git+https://github.com/rust-blockchain/evm?rev=44bb77c27be9ee615eaa576ad914fbb461537276#44bb77c27be9ee615eaa576ad914fbb461537276" dependencies = [ "environmental", "evm-core", @@ -3684,7 +3684,7 @@ dependencies = [ [[package]] name = "evm-runtime" version = "0.39.0" -source = "git+https://github.com/rust-blockchain/evm?rev=b7b82c7e1fc57b7449d6dfa6826600de37cc1e65#b7b82c7e1fc57b7449d6dfa6826600de37cc1e65" +source = "git+https://github.com/rust-blockchain/evm?rev=44bb77c27be9ee615eaa576ad914fbb461537276#44bb77c27be9ee615eaa576ad914fbb461537276" dependencies = [ "auto_impl", "environmental", diff --git a/modules/evm-utility/Cargo.toml b/modules/evm-utility/Cargo.toml index f7a7a5992e..e40fa49f38 100644 --- a/modules/evm-utility/Cargo.toml +++ b/modules/evm-utility/Cargo.toml @@ -9,9 +9,9 @@ sha3 = { workspace = true } sp-std = { workspace = true } -evm = { git = "https://github.com/rust-blockchain/evm", rev = "b7b82c7e1fc57b7449d6dfa6826600de37cc1e65", default-features = false, features = ["with-codec"] } -evm-gasometer = { git = "https://github.com/rust-blockchain/evm", rev = "b7b82c7e1fc57b7449d6dfa6826600de37cc1e65", default-features = false } -evm-runtime = { git = "https://github.com/rust-blockchain/evm", rev = "b7b82c7e1fc57b7449d6dfa6826600de37cc1e65", default-features = false } +evm = { git = "https://github.com/rust-blockchain/evm", rev = "44bb77c27be9ee615eaa576ad914fbb461537276", default-features = false, features = ["with-codec"] } +evm-gasometer = { git = "https://github.com/rust-blockchain/evm", rev = "44bb77c27be9ee615eaa576ad914fbb461537276", default-features = false } +evm-runtime = { git = "https://github.com/rust-blockchain/evm", rev = "44bb77c27be9ee615eaa576ad914fbb461537276", default-features = false } #evm = { version = "0.41.1", default-features = false, features = ["with-codec"] } #evm-gasometer = { version = "0.41.0", default-features = false } #evm-runtime = { version = "0.41.0", default-features = false } diff --git a/modules/evm/src/precompiles/mod.rs b/modules/evm/src/precompiles/mod.rs index 32de1f73e2..ef415cfaf8 100644 --- a/modules/evm/src/precompiles/mod.rs +++ b/modules/evm/src/precompiles/mod.rs @@ -147,7 +147,12 @@ pub mod tests { } } - fn record_external_cost(&mut self, _ref_time: Option, _proof_size: Option) -> Result<(), ExitError> { + fn record_external_cost( + &mut self, + _ref_time: Option, + _proof_size: Option, + _storage_growth: Option, + ) -> Result<(), ExitError> { unimplemented!() } diff --git a/modules/evm/src/runner/state.rs b/modules/evm/src/runner/state.rs index 3f9e671a95..17a14d18cd 100644 --- a/modules/evm/src/runner/state.rs +++ b/modules/evm/src/runner/state.rs @@ -363,7 +363,12 @@ pub trait StackState<'config>: Backend { Ok(()) } - fn record_external_cost(&mut self, _ref_time: Option, _proof_size: Option) -> Result<(), ExitError> { + fn record_external_cost( + &mut self, + _ref_time: Option, + _proof_size: Option, + _storage_growth: Option, + ) -> Result<(), ExitError> { Ok(()) } @@ -1167,9 +1172,12 @@ impl<'config, 'precompiles, S: StackState<'config>, P: PrecompileSet> StackExecu match self.state.metadata_mut().gasometer.record_deposit(out.len()) { Ok(()) => { + let code_len = out.len(); self.state.set_code(address, out); let exit_result = self.exit_substate(StackExitKind::Succeeded); - if let Err(e) = self.record_external_operation(crate::ExternalOperation::Write) { + if let Err(e) = + self.record_external_operation(crate::ExternalOperation::Write(U256::from(code_len))) + { return (e.into(), None, Vec::new()); } if let Err(e) = exit_result { @@ -1601,8 +1609,15 @@ impl<'inner, 'config, 'precompiles, S: StackState<'config>, P: PrecompileSet> Pr } /// Record Substrate specific cost. - fn record_external_cost(&mut self, ref_time: Option, proof_size: Option) -> Result<(), ExitError> { - self.executor.state.record_external_cost(ref_time, proof_size) + fn record_external_cost( + &mut self, + ref_time: Option, + proof_size: Option, + storage_growth: Option, + ) -> Result<(), ExitError> { + self.executor + .state + .record_external_cost(ref_time, proof_size, storage_growth) } /// Refund Substrate specific cost.