From e8f7ecd157857c526a3267b744457b4c5816de73 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Tue, 17 Jun 2025 14:44:16 +0200 Subject: [PATCH 1/2] Only record diff if value --- .../frame/revive/src/evm/tracing/prestate_tracing.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/evm/tracing/prestate_tracing.rs b/substrate/frame/revive/src/evm/tracing/prestate_tracing.rs index 542be0f2fcd6b..c0794458b846b 100644 --- a/substrate/frame/revive/src/evm/tracing/prestate_tracing.rs +++ b/substrate/frame/revive/src/evm/tracing/prestate_tracing.rs @@ -200,7 +200,8 @@ where fn storage_write(&mut self, key: &Key, old_value: Option>, new_value: Option<&[u8]>) { let key = Bytes::from(key.unhashed().to_vec()); - self.trace + let old_value = self + .trace .0 .entry(self.current_addr) .or_default() @@ -208,13 +209,19 @@ where .entry(key.clone()) .or_insert_with(|| old_value.map(Into::into)); - if self.config.diff_mode { + if !self.config.diff_mode { + return + } + + if old_value.as_ref().map(|v| v.0.as_ref()) != new_value { self.trace .1 .entry(self.current_addr) .or_default() .storage .insert(key, new_value.map(|v| v.to_vec().into())); + } else { + self.trace.1.entry(self.current_addr).or_default().storage.remove(&key); } } From 11f6cdb033e5dc64269164d7b569aa3225ec7c09 Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:57:43 +0000 Subject: [PATCH 2/2] Update from github-actions[bot] running command 'prdoc --audience runtime_dev --bump patch' --- prdoc/pr_8881.prdoc | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 prdoc/pr_8881.prdoc diff --git a/prdoc/pr_8881.prdoc b/prdoc/pr_8881.prdoc new file mode 100644 index 0000000000000..ca0f09fab3a34 --- /dev/null +++ b/prdoc/pr_8881.prdoc @@ -0,0 +1,11 @@ +title: '[pallet-revive] only record diff if value changed' +doc: +- audience: Runtime Dev + description: |- + Only record storage change in diff mode if the value differ from the initial one. + Previous implementation would report a diff for example when the old value was written again. + + Updated tests in https://github.com/paritytech/evm-test-suite/pull/96 +crates: +- name: pallet-revive + bump: patch