From 46058be859e095211d05081a5fb752be54c0e3d3 Mon Sep 17 00:00:00 2001 From: Diego Date: Wed, 14 May 2025 10:35:39 -0300 Subject: [PATCH 1/6] Add DecodeWithMemTracking --- core/src/error.rs | 41 +++++++++++++++++++++++++++++++++-------- core/src/opcode.rs | 7 ++++++- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/core/src/error.rs b/core/src/error.rs index 9c6dd34e2..e15f74aca 100644 --- a/core/src/error.rs +++ b/core/src/error.rs @@ -1,5 +1,5 @@ use crate::Opcode; -use alloc::borrow::Cow; +use alloc::string::String; /// Trap which indicates that an `ExternalOpcode` has to be handled. pub type Trap = Opcode; @@ -18,7 +18,12 @@ pub enum Capture { #[derive(Clone, Debug, Eq, PartialEq)] #[cfg_attr( feature = "with-codec", - derive(scale_codec::Encode, scale_codec::Decode, scale_info::TypeInfo) + derive( + scale_codec::Encode, + scale_codec::Decode, + scale_codec::DecodeWithMemTracking, + scale_info::TypeInfo + ) )] #[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub enum ExitReason { @@ -59,7 +64,12 @@ impl ExitReason { #[derive(Clone, Copy, Debug, Eq, PartialEq)] #[cfg_attr( feature = "with-codec", - derive(scale_codec::Encode, scale_codec::Decode, scale_info::TypeInfo) + derive( + scale_codec::Encode, + scale_codec::Decode, + scale_codec::DecodeWithMemTracking, + scale_info::TypeInfo + ) )] #[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub enum ExitSucceed { @@ -81,7 +91,12 @@ impl From for ExitReason { #[derive(Clone, Copy, Debug, Eq, PartialEq)] #[cfg_attr( feature = "with-codec", - derive(scale_codec::Encode, scale_codec::Decode, scale_info::TypeInfo) + derive( + scale_codec::Encode, + scale_codec::Decode, + scale_codec::DecodeWithMemTracking, + scale_info::TypeInfo + ) )] #[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub enum ExitRevert { @@ -99,7 +114,12 @@ impl From for ExitReason { #[derive(Clone, Debug, Eq, PartialEq)] #[cfg_attr( feature = "with-codec", - derive(scale_codec::Encode, scale_codec::Decode, scale_info::TypeInfo) + derive( + scale_codec::Encode, + scale_codec::Decode, + scale_codec::DecodeWithMemTracking, + scale_info::TypeInfo + ) )] #[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub enum ExitError { @@ -154,7 +174,7 @@ pub enum ExitError { /// Other normal errors. #[cfg_attr(feature = "with-codec", codec(index = 13))] - Other(Cow<'static, str>), + Other(String), /// Nonce reached maximum value of 2^64-1 /// https://eips.ethereum.org/EIPS/eip-2681 @@ -172,7 +192,12 @@ impl From for ExitReason { #[derive(Clone, Debug, Eq, PartialEq)] #[cfg_attr( feature = "with-codec", - derive(scale_codec::Encode, scale_codec::Decode, scale_info::TypeInfo) + derive( + scale_codec::Encode, + scale_codec::Decode, + scale_codec::DecodeWithMemTracking, + scale_info::TypeInfo + ) )] #[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub enum ExitFatal { @@ -184,7 +209,7 @@ pub enum ExitFatal { CallErrorAsFatal(ExitError), /// Other fatal errors. - Other(Cow<'static, str>), + Other(String), } impl From for ExitReason { diff --git a/core/src/opcode.rs b/core/src/opcode.rs index 97cd18f3a..0b40a4ce8 100644 --- a/core/src/opcode.rs +++ b/core/src/opcode.rs @@ -2,7 +2,12 @@ #[derive(Clone, Copy, Debug, Eq, PartialEq)] #[cfg_attr( feature = "with-codec", - derive(scale_codec::Encode, scale_codec::Decode, scale_info::TypeInfo) + derive( + scale_codec::Encode, + scale_codec::Decode, + scale_codec::DecodeWithMemTracking, + scale_info::TypeInfo + ) )] #[cfg_attr(feature = "with-serde", derive(serde::Serialize, serde::Deserialize))] pub struct Opcode(pub u8); From 6438b1eee745db30ab266a5ae7f5b9bc94986eda Mon Sep 17 00:00:00 2001 From: Diego Date: Wed, 14 May 2025 10:44:34 -0300 Subject: [PATCH 2/6] Upgrade ethereum dep to latest commit --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 79b96fad2..5427ecf6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ edition = "2018" [dependencies] auto_impl = "1.0" -ethereum = { git = "https://github.com/rust-ethereum/ethereum.git", rev = "3be0d8fd4c2ad1ba216b69ef65b9382612efc8ba", default-features = false } +ethereum = { git = "https://github.com/rust-ethereum/ethereum.git", rev = "bbb544622208ef6e9890a2dbc224248f6dd13318", default-features = false } log = { version = "0.4", default-features = false } primitive-types = { version = "0.13", default-features = false, features = ["rlp"] } rlp = { version = "0.6", default-features = false } From 5081979305b3b303a6009db607d6b05f99cc76cd Mon Sep 17 00:00:00 2001 From: Diego Date: Sun, 18 May 2025 23:34:33 -0300 Subject: [PATCH 3/6] Update parity-scale-codec --- Cargo.toml | 7 +++++-- core/src/error.rs | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5427ecf6f..76d9ecbd9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,9 +16,8 @@ primitive-types = { version = "0.13", default-features = false, features = ["rlp rlp = { version = "0.6", default-features = false } sha3 = { version = "0.10", default-features = false } -# Optional dependencies environmental = { version = "1.1.2", default-features = false, optional = true } -scale-codec = { package = "parity-scale-codec", version = "3.2", default-features = false, features = ["derive"], optional = true } +scale-codec = { package = "parity-scale-codec", git = "https://github.com/paritytech/parity-scale-codec", rev = "334b99c9cc8def7408bcd91d1ff7bfd79f7e2915", default-features = false, features = ["derive"], optional = true } scale-info = { version = "2.3", default-features = false, features = ["derive"], optional = true } serde = { version = "1.0", default-features = false, features = ["derive"], optional = true } @@ -82,3 +81,7 @@ members = [ "runtime", "fuzzer", ] + +# --- Path to force use the correct parity-scale-codec version --- +[patch.crates-io] +parity-scale-codec = { git = "https://github.com/paritytech/parity-scale-codec", rev = "334b99c9cc8def7408bcd91d1ff7bfd79f7e2915", default-features = false, features = ["derive"]} \ No newline at end of file diff --git a/core/src/error.rs b/core/src/error.rs index e15f74aca..1841b3e17 100644 --- a/core/src/error.rs +++ b/core/src/error.rs @@ -1,5 +1,5 @@ use crate::Opcode; -use alloc::string::String; +use alloc::borrow::Cow; /// Trap which indicates that an `ExternalOpcode` has to be handled. pub type Trap = Opcode; @@ -174,7 +174,7 @@ pub enum ExitError { /// Other normal errors. #[cfg_attr(feature = "with-codec", codec(index = 13))] - Other(String), + Other(Cow<'static, str>), /// Nonce reached maximum value of 2^64-1 /// https://eips.ethereum.org/EIPS/eip-2681 @@ -209,7 +209,7 @@ pub enum ExitFatal { CallErrorAsFatal(ExitError), /// Other fatal errors. - Other(String), + Other(Cow<'static, str>), } impl From for ExitReason { From 3fcf541b1c7063b1adae3a959533657fe8a78389 Mon Sep 17 00:00:00 2001 From: Diego Date: Sun, 18 May 2025 23:40:12 -0300 Subject: [PATCH 4/6] Fix typo --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 76d9ecbd9..79ed08f07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -82,6 +82,6 @@ members = [ "fuzzer", ] -# --- Path to force use the correct parity-scale-codec version --- +# --- Patch to force use the correct parity-scale-codec version --- [patch.crates-io] parity-scale-codec = { git = "https://github.com/paritytech/parity-scale-codec", rev = "334b99c9cc8def7408bcd91d1ff7bfd79f7e2915", default-features = false, features = ["derive"]} \ No newline at end of file From 2c51bc1234812b013130938d6543a911a0db34ef Mon Sep 17 00:00:00 2001 From: Diego Date: Sun, 18 May 2025 23:55:12 -0300 Subject: [PATCH 5/6] Restore comment --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 79ed08f07..f63f4e4f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ primitive-types = { version = "0.13", default-features = false, features = ["rlp rlp = { version = "0.6", default-features = false } sha3 = { version = "0.10", default-features = false } +# Optional dependencies environmental = { version = "1.1.2", default-features = false, optional = true } scale-codec = { package = "parity-scale-codec", git = "https://github.com/paritytech/parity-scale-codec", rev = "334b99c9cc8def7408bcd91d1ff7bfd79f7e2915", default-features = false, features = ["derive"], optional = true } scale-info = { version = "2.3", default-features = false, features = ["derive"], optional = true } From 051f5b3bed6189eeb9b7184321503f85ee22bd90 Mon Sep 17 00:00:00 2001 From: Diego Date: Tue, 20 May 2025 12:36:33 -0300 Subject: [PATCH 6/6] Use new scale codec release --- Cargo.toml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f63f4e4f1..a4acafd3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ sha3 = { version = "0.10", default-features = false } # Optional dependencies environmental = { version = "1.1.2", default-features = false, optional = true } -scale-codec = { package = "parity-scale-codec", git = "https://github.com/paritytech/parity-scale-codec", rev = "334b99c9cc8def7408bcd91d1ff7bfd79f7e2915", default-features = false, features = ["derive"], optional = true } +scale-codec = { package = "parity-scale-codec", version = "3.7.5", default-features = false, features = ["derive"], optional = true } scale-info = { version = "2.3", default-features = false, features = ["derive"], optional = true } serde = { version = "1.0", default-features = false, features = ["derive"], optional = true } @@ -81,8 +81,4 @@ members = [ "gasometer", "runtime", "fuzzer", -] - -# --- Patch to force use the correct parity-scale-codec version --- -[patch.crates-io] -parity-scale-codec = { git = "https://github.com/paritytech/parity-scale-codec", rev = "334b99c9cc8def7408bcd91d1ff7bfd79f7e2915", default-features = false, features = ["derive"]} \ No newline at end of file +] \ No newline at end of file