From e913a536f0001b7bd7daa57c0a1a553491809653 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Thu, 9 Mar 2023 16:25:34 +0100 Subject: [PATCH] fix: serialize index as hex string (#1687) --- Cargo.lock | 1 + crates/rpc/rpc-types/Cargo.toml | 1 + crates/rpc/rpc-types/src/eth/index.rs | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 71b8ad0fe9..8ce1a7824c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5021,6 +5021,7 @@ version = "0.1.0" dependencies = [ "jsonrpsee-types", "lru 0.9.0", + "rand 0.8.5", "reth-interfaces", "reth-network-api", "reth-primitives", diff --git a/crates/rpc/rpc-types/Cargo.toml b/crates/rpc/rpc-types/Cargo.toml index d3d5a9d1c1..dcf39ef795 100644 --- a/crates/rpc/rpc-types/Cargo.toml +++ b/crates/rpc/rpc-types/Cargo.toml @@ -27,4 +27,5 @@ jsonrpsee-types = { version = "0.16" } lru = "0.9" [dev-dependencies] +rand = "0.8" reth-interfaces = { path = "../../interfaces", features = ["test-utils"] } diff --git a/crates/rpc/rpc-types/src/eth/index.rs b/crates/rpc/rpc-types/src/eth/index.rs index 217a928e3e..69e28b016d 100644 --- a/crates/rpc/rpc-types/src/eth/index.rs +++ b/crates/rpc/rpc-types/src/eth/index.rs @@ -19,7 +19,7 @@ impl Serialize for Index { where S: Serializer, { - serializer.serialize_str(&format!("{:x}", self.0)) + serializer.serialize_str(&format!("0x{:x}", self.0)) } } @@ -71,3 +71,20 @@ impl<'a> Deserialize<'a> for Index { deserializer.deserialize_any(IndexVisitor) } } + +#[cfg(test)] +mod tests { + use super::*; + use rand::{thread_rng, Rng}; + + #[test] + fn test_serde_index_rand() { + let mut rng = thread_rng(); + for _ in 0..100 { + let index = Index(rng.gen()); + let val = serde_json::to_string(&index).unwrap(); + let de: Index = serde_json::from_str(&val).unwrap(); + assert_eq!(index, de); + } + } +}