From 113a87b4f8f295d4aeb3cc64bfe8e26f8978b9a3 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Sat, 15 Feb 2025 04:33:13 +0800 Subject: [PATCH] Add serde-bincode-compat for receipt (#14399) Co-authored-by: Matthias Seitz --- crates/e2e-test-utils/Cargo.toml | 2 +- crates/ethereum/primitives/src/receipt.rs | 9 +++++++++ crates/optimism/primitives/src/receipt.rs | 9 +++++++++ crates/primitives-traits/src/receipt.rs | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/crates/e2e-test-utils/Cargo.toml b/crates/e2e-test-utils/Cargo.toml index 57610c77b..1df1a20f8 100644 --- a/crates/e2e-test-utils/Cargo.toml +++ b/crates/e2e-test-utils/Cargo.toml @@ -34,7 +34,7 @@ reth-engine-local.workspace = true reth-tasks.workspace = true # currently need to enable this for workspace level -reth-optimism-primitives = { workspace = true, features = ["arbitrary", "serde"] } +reth-optimism-primitives = { workspace = true, features = ["arbitrary", "serde", "serde-bincode-compat"] } # rpc jsonrpsee.workspace = true diff --git a/crates/ethereum/primitives/src/receipt.rs b/crates/ethereum/primitives/src/receipt.rs index 2fec1bf85..e364a13ae 100644 --- a/crates/ethereum/primitives/src/receipt.rs +++ b/crates/ethereum/primitives/src/receipt.rs @@ -193,6 +193,15 @@ impl InMemorySize for Receipt { impl reth_primitives_traits::Receipt for Receipt {} +#[cfg(feature = "serde-bincode-compat")] +impl reth_primitives_traits::serde_bincode_compat::SerdeBincodeCompat for Receipt { + type BincodeRepr<'a> = Self; + + fn as_repr(&self) -> Self::BincodeRepr<'_> { + self.clone() + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/optimism/primitives/src/receipt.rs b/crates/optimism/primitives/src/receipt.rs index 74f9a4e49..019095dbc 100644 --- a/crates/optimism/primitives/src/receipt.rs +++ b/crates/optimism/primitives/src/receipt.rs @@ -211,6 +211,15 @@ impl InMemorySize for OpReceipt { impl reth_primitives_traits::Receipt for OpReceipt {} +#[cfg(feature = "serde-bincode-compat")] +impl reth_primitives_traits::serde_bincode_compat::SerdeBincodeCompat for OpReceipt { + type BincodeRepr<'a> = Self; + + fn as_repr(&self) -> Self::BincodeRepr<'_> { + self.clone() + } +} + /// Trait for deposit receipt. pub trait DepositReceipt: reth_primitives_traits::Receipt { /// Returns deposit receipt if it is a deposit transaction. diff --git a/crates/primitives-traits/src/receipt.rs b/crates/primitives-traits/src/receipt.rs index 7d4fa8902..a8d632c35 100644 --- a/crates/primitives-traits/src/receipt.rs +++ b/crates/primitives-traits/src/receipt.rs @@ -1,6 +1,6 @@ //! Receipt abstraction -use crate::{InMemorySize, MaybeCompact, MaybeSerde}; +use crate::{InMemorySize, MaybeCompact, MaybeSerde, MaybeSerdeBincodeCompat}; use alloc::vec::Vec; use alloy_consensus::{ Eip2718EncodableReceipt, RlpDecodableReceipt, RlpEncodableReceipt, TxReceipt, Typed2718, @@ -27,6 +27,7 @@ pub trait Receipt: + Typed2718 + MaybeSerde + InMemorySize + + MaybeSerdeBincodeCompat { }